Skip to content

Commit 928973e

Browse files
rodrigokggazzo
authored andcommitted
regression: topic not reflecting from matrix
1 parent 3c11f09 commit 928973e

File tree

10 files changed

+35
-27
lines changed

10 files changed

+35
-27
lines changed

apps/meteor/app/channel-settings/server/functions/saveRoomTopic.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Message, Room } from '@rocket.chat/core-services';
2+
import type { IUser } from '@rocket.chat/core-typings';
23
import { Rooms } from '@rocket.chat/models';
34
import { Match } from 'meteor/check';
45
import { Meteor } from 'meteor/meteor';
@@ -8,10 +9,7 @@ import { callbacks } from '../../../../lib/callbacks';
89
export const saveRoomTopic = async (
910
rid: string,
1011
roomTopic: string | undefined,
11-
user: {
12-
username: string;
13-
_id: string;
14-
},
12+
user: Pick<IUser, 'username' | '_id' | 'federation' | 'federated'>,
1513
sendMessage = true,
1614
) => {
1715
if (!Match.test(rid, String)) {

apps/meteor/lib/callbacks.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,10 @@ type ChainedCallbackSignatures = {
203203
'roomAvatarChanged': (room: IRoom) => void;
204204
'beforeGetMentions': (mentionIds: string[], teamMentions: MessageMention[]) => Promise<string[]>;
205205
'livechat.manageDepartmentUnit': (params: { userId: string; departmentId: string; unitId?: string }) => void;
206-
'afterRoomTopicChange': (params: undefined, { room, topic, user }: { room: IRoom; topic: string; user: IUser }) => void;
206+
'afterRoomTopicChange': (
207+
params: undefined,
208+
{ room, topic, user }: { room: IRoom; topic: string; user: Pick<IUser, 'username' | '_id' | 'federation' | 'federated'> },
209+
) => void;
207210
};
208211

209212
export type Hook =

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,7 @@ export class RoomService extends ServiceClassInternal implements IRoomService {
8888
async saveRoomTopic(
8989
roomId: string,
9090
roomTopic: string | undefined,
91-
user: {
92-
username: string;
93-
_id: string;
94-
},
91+
user: Pick<IUser, 'username' | '_id' | 'federation' | 'federated'>,
9592
sendMessage = true,
9693
): Promise<void> {
9794
await saveRoomTopic(roomId, roomTopic, user, sendMessage);

ee/packages/federation-matrix/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"@babel/preset-env": "~7.26.0",
99
"@babel/preset-typescript": "~7.26.0",
1010
"@rocket.chat/eslint-config": "workspace:^",
11-
"@rocket.chat/federation-sdk": "0.1.19",
11+
"@rocket.chat/federation-sdk": "0.1.21",
1212
"@types/emojione": "^2.2.9",
1313
"@types/node": "~22.14.0",
1414
"@types/sanitize-html": "^2",

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -853,14 +853,18 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS
853853
await this.homeserverServices.room.updateRoomName(roomIdSchema.parse(room.federation.mrid), displayName, userIdSchema.parse(userMui));
854854
}
855855

856-
async updateRoomTopic(room: IRoomNativeFederated, topic: string, user: IUser): Promise<void> {
856+
async updateRoomTopic(
857+
room: IRoomNativeFederated,
858+
topic: string,
859+
user: Pick<IUser, '_id' | 'username' | 'federation' | 'federated'>,
860+
): Promise<void> {
857861
if (!this.homeserverServices) {
858862
this.logger.warn('Homeserver services not available, skipping room topic update');
859863

860864
return;
861865
}
862866

863-
const userMui = isUserNativeFederated(user) ? user.federation.mui : `@${user.username}:${this.serverName}`;
867+
const userMui = isUserNativeFederated(user) ? user.username : `@${user.username}:${this.serverName}`;
864868

865869
await this.homeserverServices.room.setRoomTopic(roomIdSchema.parse(room.federation.mrid), userIdSchema.parse(userMui), topic);
866870
}

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,17 @@ export function room(emitter: Emitter<HomeserverEventSignatures>, services: Home
3030
throw new Error('mapped room not found');
3131
}
3232

33-
const localUserId = await Users.findOneByUsername(userId, { projection: { _id: 1 } });
34-
if (!localUserId) {
33+
const localUser = await Users.findOneByUsername(userId, { projection: { _id: 1, federation: 1, federated: 1 } });
34+
if (!localUser) {
3535
throw new Error('mapped user not found');
3636
}
3737

38-
await Room.saveRoomTopic(localRoomId._id, topic, { _id: localUserId._id, username: userId });
38+
await Room.saveRoomTopic(localRoomId._id, topic, {
39+
_id: localUser._id,
40+
username: userId,
41+
federation: localUser.federation,
42+
federated: localUser.federated,
43+
});
3944
});
4045

4146
emitter.on('homeserver.matrix.room.role', async (data) => {

packages/core-services/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"@babel/preset-typescript": "~7.26.0",
99
"@rocket.chat/apps-engine": "workspace:^",
1010
"@rocket.chat/eslint-config": "workspace:^",
11-
"@rocket.chat/federation-sdk": "0.1.19",
11+
"@rocket.chat/federation-sdk": "0.1.21",
1212
"@rocket.chat/jest-presets": "workspace:~",
1313
"@rocket.chat/tsconfig": "workspace:*",
1414
"@types/jest": "~30.0.0",

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ export interface IFederationMatrixService {
1414
kickUser(room: IRoomNativeFederated, removedUser: IUser, userWhoRemoved: IUser): Promise<void>;
1515
updateMessage(room: IRoomNativeFederated, message: IMessage): Promise<void>;
1616
updateRoomName(rid: string, displayName: string, user: IUser): Promise<void>;
17-
updateRoomTopic(room: IRoomNativeFederated, topic: string, user: IUser): Promise<void>;
17+
updateRoomTopic(
18+
room: IRoomNativeFederated,
19+
topic: string,
20+
user: Pick<IUser, '_id' | 'username' | 'federation' | 'federated'>,
21+
): Promise<void>;
1822
addUserRoleRoomScoped(
1923
room: IRoomNativeFederated,
2024
senderId: string,

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,7 @@ export interface IRoomService {
4646
saveRoomTopic(
4747
roomId: string,
4848
roomTopic: string | undefined,
49-
user: {
50-
username: string;
51-
_id: string;
52-
},
49+
user: Pick<IUser, 'username' | '_id' | 'federation' | 'federated'>,
5350
sendMessage?: boolean,
5451
): Promise<void>;
5552
getRouteLink(room: AtLeast<IRoom, '_id' | 't' | 'name'>): Promise<string | boolean>;

yarn.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7324,7 +7324,7 @@ __metadata:
73247324
"@rocket.chat/apps-engine": "workspace:^"
73257325
"@rocket.chat/core-typings": "workspace:^"
73267326
"@rocket.chat/eslint-config": "workspace:^"
7327-
"@rocket.chat/federation-sdk": "npm:0.1.19"
7327+
"@rocket.chat/federation-sdk": "npm:0.1.21"
73287328
"@rocket.chat/http-router": "workspace:^"
73297329
"@rocket.chat/icons": "npm:^0.43.0"
73307330
"@rocket.chat/jest-presets": "workspace:~"
@@ -7537,7 +7537,7 @@ __metadata:
75377537
"@rocket.chat/core-typings": "workspace:^"
75387538
"@rocket.chat/emitter": "npm:^0.31.25"
75397539
"@rocket.chat/eslint-config": "workspace:^"
7540-
"@rocket.chat/federation-sdk": "npm:0.1.19"
7540+
"@rocket.chat/federation-sdk": "npm:0.1.21"
75417541
"@rocket.chat/http-router": "workspace:^"
75427542
"@rocket.chat/license": "workspace:^"
75437543
"@rocket.chat/models": "workspace:^"
@@ -7565,9 +7565,9 @@ __metadata:
75657565
languageName: unknown
75667566
linkType: soft
75677567

7568-
"@rocket.chat/federation-sdk@npm:0.1.19":
7569-
version: 0.1.19
7570-
resolution: "@rocket.chat/federation-sdk@npm:0.1.19"
7568+
"@rocket.chat/federation-sdk@npm:0.1.21":
7569+
version: 0.1.21
7570+
resolution: "@rocket.chat/federation-sdk@npm:0.1.21"
75717571
dependencies:
75727572
"@datastructures-js/priority-queue": "npm:^6.3.3"
75737573
"@noble/ed25519": "npm:^3.0.0"
@@ -7580,7 +7580,7 @@ __metadata:
75807580
zod: "npm:^3.22.4"
75817581
peerDependencies:
75827582
typescript: ~5.9.2
7583-
checksum: 10/f1b0ddb082890982c7f6b3949c9193362f1d12bfc55e723fe7c528a21a8e5cd428c1631d850dadb0e06590302aa6cf84d00d0c90bc95dbe01eab987ac00bd24c
7583+
checksum: 10/348ca6461759434132c6ca1ba92bdda698f7ef4605c33d2479491c518b5b73fe80d7f9c9d51e93877fe377120e2f31497fb492bf82be40bed92c88f31e5ec5af
75847584
languageName: node
75857585
linkType: hard
75867586

0 commit comments

Comments
 (0)