1+ import type { FileMessageContent , MessageType } from '@hs/core' ;
12import type { HomeserverEventSignatures } from '@hs/federation-sdk' ;
3+ import type { EventID } from '@hs/room' ;
24import { FederationMatrix , Message , MeteorService } from '@rocket.chat/core-services' ;
35import type { IUser , IRoom , FileAttachmentProps } from '@rocket.chat/core-typings' ;
46import type { Emitter } from '@rocket.chat/emitter' ;
@@ -9,8 +11,6 @@ import { fileTypes } from '../FederationMatrix';
911import { saveLocalUserForExternalUserId } from '../helpers/identifiers' ;
1012import { toInternalMessageFormat , toInternalQuoteMessageFormat } from '../helpers/message.parsers' ;
1113import { MatrixMediaService } from '../services/MatrixMediaService' ;
12- import { FileMessageContent , MessageType } from '@hs/core' ;
13- import { EventID } from '@hs/room' ;
1414
1515const logger = new Logger ( 'federation-matrix:message' ) ;
1616
@@ -113,6 +113,7 @@ async function handleMediaMessage(
113113 msg : string ;
114114 federation_event_id : string ;
115115 tmid ?: string ;
116+ attachments : [ FileAttachmentProps ] ;
116117} > {
117118 const mimeType = fileInfo ?. mimetype ;
118119 const fileName = messageBody ;
@@ -151,12 +152,13 @@ async function handleMediaMessage(
151152 image_url : fileUrl ,
152153 image_type : mimeType ,
153154 image_size : fileInfo ?. size || 0 ,
154- ...( fileInfo ?. w && fileInfo ?. h && {
155- image_dimensions : {
156- width : fileInfo . w ,
157- height : fileInfo . h ,
158- } ,
159- } ) ,
155+ ...( fileInfo ?. w &&
156+ fileInfo ?. h && {
157+ image_dimensions : {
158+ width : fileInfo . w ,
159+ height : fileInfo . h ,
160+ } ,
161+ } ) ,
160162 } ;
161163 } else if ( msgtype === 'm.video' ) {
162164 attachment = {
@@ -180,14 +182,15 @@ async function handleMediaMessage(
180182 msg : '' ,
181183 federation_event_id : eventId ,
182184 tmid,
185+ attachments : [ attachment ] ,
183186 } ;
184187}
185188
186189export function message ( emitter : Emitter < HomeserverEventSignatures > , serverName : string ) {
187190 emitter . on ( 'homeserver.matrix.message' , async ( data ) => {
188191 try {
189- const content = data . content ;
190- const msgtype = content . msgtype ;
192+ const { content } = data ;
193+ const { msgtype } = content ;
191194 const messageBody = content . body . toString ( ) ;
192195
193196 if ( ! messageBody && ! msgtype ) {
@@ -272,12 +275,17 @@ export function message(emitter: Emitter<HomeserverEventSignatures>, serverName:
272275
273276 if ( isQuoteMessage && room . name ) {
274277 const originalEventId = relatesTo [ 'm.in_reply_to' ] ?. event_id ;
275- const originalMessage = originalEventId && await Messages . findOneByFederationId ( originalEventId ) ;
278+ const originalMessage = originalEventId && ( await Messages . findOneByFederationId ( originalEventId ) ) ;
276279 if ( ! originalMessage ) {
277280 logger . error ( 'Original message not found for quote:' , relatesTo [ 'm.in_reply_to' ] ?. event_id ) ;
278281 return ;
279282 }
280- const messageToReplyToUrl = await MeteorService . getMessageURLToReplyTo ( room . t as string , room . _id , room . name , originalMessage . _id ) ;
283+ const messageToReplyToUrl = await MeteorService . getMessageURLToReplyTo (
284+ room . t as string ,
285+ room . _id ,
286+ room . name ,
287+ originalMessage . _id ,
288+ ) ;
281289 const formatted = await toInternalQuoteMessageFormat ( {
282290 messageToReplyToUrl,
283291 formattedMessage : content . formatted_body || '' ,
0 commit comments