Skip to content

Commit d77bdcf

Browse files
committed
Merge remote-tracking branch 'origin/chore/federation-backup' into feat/federation-files-2
2 parents b83f6cb + 76470a2 commit d77bdcf

File tree

3 files changed

+15
-19
lines changed

3 files changed

+15
-19
lines changed

apps/meteor/server/services/messages/service.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,25 +90,24 @@ export class MessageService extends ServiceClassInternal implements IMessageServ
9090
rid,
9191
msg,
9292
federation_event_id,
93-
tmid,
9493
file,
9594
files,
9695
attachments,
96+
thread,
9797
}: {
9898
fromId: string;
9999
rid: string;
100100
msg: string;
101101
federation_event_id: string;
102-
tmid?: string;
103102
file?: IMessage['file'];
104103
files?: IMessage['files'];
105104
attachments?: IMessage['attachments'];
105+
thread?: { tmid: string; tshow: boolean };
106106
}): Promise<IMessage> {
107-
const threadParams = tmid ? { tmid, tshow: true } : {};
108107
return executeSendMessage(fromId, {
109108
rid,
110109
msg,
111-
...threadParams,
110+
...thread,
112111
federation: { eventId: federation_event_id },
113112
...(file && { file }),
114113
...(files && { files }),

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

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -108,18 +108,15 @@ async function getRoomAndEnsureSubscription(matrixRoomId: string, user: IUser):
108108
return room;
109109
}
110110

111-
async function getThreadMessageId(threadRootEventId: string | undefined): Promise<string | undefined> {
112-
if (!threadRootEventId) {
113-
return undefined;
114-
}
115-
111+
async function getThreadMessageId(threadRootEventId: string): Promise<{ tmid: string; tshow: boolean } | undefined> {
116112
const threadRootMessage = await Messages.findOneByFederationId(threadRootEventId);
117-
if (threadRootMessage) {
118-
logger.debug('Found thread root message:', { tmid: threadRootMessage._id, threadRootEventId });
119-
return threadRootMessage._id;
113+
if (!threadRootMessage) {
114+
logger.warn('Thread root message not found for event:', threadRootEventId);
115+
return;
120116
}
121-
logger.warn('Thread root message not found for event:', threadRootEventId);
122-
return undefined;
117+
118+
const shouldSetTshow = !threadRootMessage?.tcount;
119+
return { tmid: threadRootMessage._id, tshow: shouldSetTshow };
123120
}
124121

125122
async function handleMediaMessage(
@@ -246,7 +243,7 @@ export function message(emitter: Emitter<HomeserverEventSignatures>, serverName:
246243
const isThreadMessage = threadRelation?.rel_type === 'm.thread';
247244
const isQuoteMessage = replyToRelation?.['m.in_reply_to']?.event_id && !replyToRelation?.is_falling_back;
248245
const threadRootEventId = isThreadMessage ? threadRelation.event_id : undefined;
249-
const tmid = await getThreadMessageId(threadRootEventId);
246+
const thread = await getThreadMessageId(threadRootEventId);
250247

251248
const isMediaMessage = Object.values(fileTypes).includes(msgtype);
252249

@@ -327,7 +324,7 @@ export function message(emitter: Emitter<HomeserverEventSignatures>, serverName:
327324
rid: room._id,
328325
msg: formatted,
329326
federation_event_id: data.event_id,
330-
tmid,
327+
thread,
331328
});
332329
return;
333330
}
@@ -347,7 +344,7 @@ export function message(emitter: Emitter<HomeserverEventSignatures>, serverName:
347344
rid: room._id,
348345
msg: formatted,
349346
federation_event_id: data.event_id,
350-
tmid,
347+
thread,
351348
});
352349
}
353350
} catch (error) {

packages/core-services/src/types/IMessageService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@ export interface IMessageService {
1414
rid,
1515
msg,
1616
federation_event_id,
17-
tmid,
1817
file,
1918
files,
2019
attachments,
20+
thread,
2121
}: {
2222
fromId: string;
2323
rid: string;
2424
msg: string;
2525
federation_event_id: string;
26-
tmid?: string;
2726
file?: IMessage['file'];
2827
files?: IMessage['files'];
2928
attachments?: IMessage['attachments'];
29+
thread?: { tmid: string; tshow: boolean };
3030
}): Promise<IMessage>;
3131
saveSystemMessageAndNotifyUser<T = IMessage>(
3232
type: MessageTypesValues,

0 commit comments

Comments
 (0)