@@ -11,6 +11,7 @@ import { roomCoordinator } from '../../../../../lib/rooms/roomCoordinator';
11
11
import type { FederatedRoom } from '../../../domain/FederatedRoom' ;
12
12
import type { FederatedUser } from '../../../domain/FederatedUser' ;
13
13
import { toInternalMessageFormat , toInternalQuoteMessageFormat } from '../converters/to-external-parser-formatter' ;
14
+ import { escapeExternalFederationEventId } from './federation-id-escape-helper' ;
14
15
15
16
const DEFAULT_EMOJI_TO_REACT_WHEN_RECEIVED_EMOJI_DOES_NOT_EXIST = ':grey_question:' ;
16
17
@@ -316,7 +317,12 @@ export class RocketChatMessageAdapter {
316
317
try {
317
318
await executeSetReaction ( user . getInternalId ( ) , reaction , message . _id ) ;
318
319
user . getUsername ( ) &&
319
- ( await Messages . setFederationReactionEventId ( user . getUsername ( ) as string , message . _id , reaction , externalEventId ) ) ;
320
+ ( await Messages . setFederationReactionEventId (
321
+ user . getUsername ( ) as string ,
322
+ message . _id ,
323
+ reaction ,
324
+ escapeExternalFederationEventId ( externalEventId ) ,
325
+ ) ) ;
320
326
} catch ( error : any ) {
321
327
if ( error ?. message ?. includes ( 'Invalid emoji provided.' ) ) {
322
328
await executeSetReaction ( user . getInternalId ( ) , DEFAULT_EMOJI_TO_REACT_WHEN_RECEIVED_EMOJI_DOES_NOT_EXIST , message . _id ) ;
@@ -326,12 +332,16 @@ export class RocketChatMessageAdapter {
326
332
327
333
public async unreactToMessage ( user : FederatedUser , message : IMessage , reaction : string , externalEventId : string ) : Promise < void > {
328
334
await executeSetReaction ( user . getInternalId ( ) , reaction , message . _id ) ;
329
- await Messages . unsetFederationReactionEventId ( externalEventId , message . _id , reaction ) ;
335
+ await Messages . unsetFederationReactionEventId ( escapeExternalFederationEventId ( externalEventId ) , message . _id , reaction ) ;
330
336
}
331
337
332
338
public async findOneByFederationIdOnReactions ( federationEventId : string , user : FederatedUser ) : Promise < IMessage | null | undefined > {
333
339
return (
334
- ( user . getUsername ( ) && Messages . findOneByFederationIdAndUsernameOnReactions ( federationEventId , user . getUsername ( ) as string ) ) ||
340
+ ( user . getUsername ( ) &&
341
+ Messages . findOneByFederationIdAndUsernameOnReactions (
342
+ escapeExternalFederationEventId ( federationEventId ) ,
343
+ user . getUsername ( ) as string ,
344
+ ) ) ||
335
345
undefined
336
346
) ;
337
347
}
@@ -345,7 +355,7 @@ export class RocketChatMessageAdapter {
345
355
}
346
356
347
357
public async unsetExternalFederationEventOnMessageReaction ( externalEventId : string , message : IMessage , reaction : string ) : Promise < void > {
348
- await Messages . unsetFederationReactionEventId ( externalEventId , message . _id , reaction ) ;
358
+ await Messages . unsetFederationReactionEventId ( escapeExternalFederationEventId ( externalEventId ) , message . _id , reaction ) ;
349
359
}
350
360
351
361
public async getMessageById ( internalMessageId : string ) : Promise < IMessage | null > {
@@ -358,6 +368,6 @@ export class RocketChatMessageAdapter {
358
368
reaction : string ,
359
369
externalEventId : string ,
360
370
) : Promise < void > {
361
- await Messages . setFederationReactionEventId ( username , message . _id , reaction , externalEventId ) ;
371
+ await Messages . setFederationReactionEventId ( username , message . _id , reaction , escapeExternalFederationEventId ( externalEventId ) ) ;
362
372
}
363
373
}
0 commit comments