Skip to content

Commit 3af8527

Browse files
committed
refactor(federation): enhance file message type handling
- Updated fileTypes to use FileMessageType for improved type safety. - Refined getMatrixMessageType to return FileMessageType. - Adjusted message handling to ensure consistent type usage across the federation module.
1 parent 5fb801e commit 3af8527

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

ee/packages/federation-matrix/src/FederationMatrix.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'reflect-metadata';
22

3-
import type { PresenceState } from '@hs/core';
3+
import type { FileMessageType, PresenceState } from '@hs/core';
44
import { ConfigService, createFederationContainer, getAllServices } from '@hs/federation-sdk';
55
import type { HomeserverEventSignatures, HomeserverServices, FederationContainerOptions } from '@hs/federation-sdk';
66
import type { EventID } from '@hs/room';
@@ -30,9 +30,7 @@ import { saveExternalUserIdForLocalUser } from './helpers/identifiers';
3030
import { toExternalMessageFormat, toExternalQuoteMessageFormat } from './helpers/message.parsers';
3131
import { MatrixMediaService } from './services/MatrixMediaService';
3232

33-
export type MatrixFileTypes = 'm.image' | 'm.video' | 'm.audio' | 'm.file';
34-
35-
export const fileTypes: Record<string, MatrixFileTypes> = {
33+
export const fileTypes: Record<string, FileMessageType> = {
3634
image: 'm.image',
3735
video: 'm.video',
3836
audio: 'm.audio',
@@ -411,7 +409,7 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS
411409
}
412410
}
413411

414-
private getMatrixMessageType(mimeType?: string): MatrixFileTypes {
412+
private getMatrixMessageType(mimeType?: string): FileMessageType {
415413
const mainType = mimeType?.split('/')[0];
416414
if (!mainType) {
417415
return fileTypes.file;

ee/packages/federation-matrix/src/events/message.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
import type { FileMessageType, MessageType } from '@hs/core';
12
import type { HomeserverEventSignatures } from '@hs/federation-sdk';
3+
import type { EventID } from '@hs/room';
24
import { FederationMatrix, Message, MeteorService } from '@rocket.chat/core-services';
35
import { UserStatus } from '@rocket.chat/core-typings';
46
import type { IUser, IRoom } from '@rocket.chat/core-typings';
57
import type { Emitter } from '@rocket.chat/emitter';
68
import { Logger } from '@rocket.chat/logger';
79
import { Users, MatrixBridgedUser, MatrixBridgedRoom, Rooms, Subscriptions, Messages } from '@rocket.chat/models';
810

9-
import type { MatrixFileTypes } from '../FederationMatrix';
1011
import { fileTypes } from '../FederationMatrix';
1112
import { toInternalMessageFormat, toInternalQuoteMessageFormat } from '../helpers/message.parsers';
1213
import { MatrixMediaService } from '../services/MatrixMediaService';
@@ -109,7 +110,7 @@ async function getRoomAndEnsureSubscription(matrixRoomId: string, user: IUser):
109110
return room;
110111
}
111112

112-
async function getThreadMessageId(threadRootEventId: string): Promise<{ tmid: string; tshow: boolean } | undefined> {
113+
async function getThreadMessageId(threadRootEventId: EventID): Promise<{ tmid: string; tshow: boolean } | undefined> {
113114
const threadRootMessage = await Messages.findOneByFederationId(threadRootEventId);
114115
if (!threadRootMessage) {
115116
logger.warn('Thread root message not found for event:', threadRootEventId);
@@ -123,7 +124,7 @@ async function getThreadMessageId(threadRootEventId: string): Promise<{ tmid: st
123124
async function handleMediaMessage(
124125
// TODO improve typing
125126
content: any,
126-
msgtype: string,
127+
msgtype: MessageType,
127128
messageBody: string,
128129
user: IUser,
129130
room: IRoom,
@@ -247,7 +248,7 @@ export function message(emitter: Emitter<HomeserverEventSignatures>, serverName:
247248

248249
const thread = threadRootEventId ? await getThreadMessageId(threadRootEventId) : undefined;
249250

250-
const isMediaMessage = Object.values(fileTypes).includes(msgtype as MatrixFileTypes);
251+
const isMediaMessage = Object.values(fileTypes).includes(msgtype as FileMessageType);
251252

252253
const isEditedMessage = relation?.rel_type === 'm.replace';
253254
if (isEditedMessage && relation?.event_id && data.content['m.new_content']) {

0 commit comments

Comments
 (0)