diff --git a/.changeset/mean-mails-pay.md b/.changeset/mean-mails-pay.md new file mode 100644 index 0000000000000..b2d32b798e1c1 --- /dev/null +++ b/.changeset/mean-mails-pay.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Fixes Slack messages being incorrectly saved on import diff --git a/apps/meteor/app/importer/server/classes/converters/MessageConverter.ts b/apps/meteor/app/importer/server/classes/converters/MessageConverter.ts index cb4cf8047470d..e9e7295078c8d 100644 --- a/apps/meteor/app/importer/server/classes/converters/MessageConverter.ts +++ b/apps/meteor/app/importer/server/classes/converters/MessageConverter.ts @@ -1,5 +1,6 @@ import type { IImportMessageRecord, IMessage as IDBMessage, IImportMessage, IImportMessageReaction } from '@rocket.chat/core-typings'; import { Rooms } from '@rocket.chat/models'; +import { removeEmpty } from '@rocket.chat/tools'; import limax from 'limax'; import type { UserIdentification, MentionedChannel } from './ConverterCache'; @@ -84,7 +85,7 @@ export class MessageConverter extends RecordConverter { const mentions = data.mentions && (await this.convertMessageMentions(data)); const channels = data.channels && (await this.convertMessageChannels(data)); - return { + return removeEmpty({ rid, u: { _id: creator._id, @@ -110,7 +111,7 @@ export class MessageConverter extends RecordConverter { alias: data.alias, ...(data._id ? { _id: data._id } : {}), ...(data.reactions ? { reactions: await this.convertMessageReactions(data.reactions) } : {}), - }; + }); } protected async convertMessageChannels(message: IImportMessage): Promise { diff --git a/apps/meteor/tests/unit/app/importer/server/messageConverter.spec.ts b/apps/meteor/tests/unit/app/importer/server/messageConverter.spec.ts index dcf72bb9b50d6..22ffa2afd4f2a 100644 --- a/apps/meteor/tests/unit/app/importer/server/messageConverter.spec.ts +++ b/apps/meteor/tests/unit/app/importer/server/messageConverter.spec.ts @@ -92,6 +92,16 @@ describe('Message Converter', () => { }); }); + it('should not have properties with undefined values', async () => { + const converter = new MessageConverter({ workInMemory: true }); + + const converted = await converter.buildMessageObject(messageToImport, 'general', { _id: 'rocket.cat', username: 'rocket.cat' }); + + Object.entries(converted).forEach(([key, value]) => { + expect(value, `Property "${key}" should not be undefined`).to.not.be.undefined; + }); + }); + // #TODO: Validate all message attributes });