Skip to content

Commit f37c9db

Browse files
committed
refactor: remove federation invite specifics from subscription
1 parent 18f1347 commit f37c9db

File tree

8 files changed

+13
-34
lines changed

8 files changed

+13
-34
lines changed

apps/meteor/app/lib/server/functions/addUserToRoom.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,12 @@ export const addUserToRoom = async (
2929
createAsHidden = false,
3030
status,
3131
inviterUsername,
32-
federation,
3332
}: {
3433
skipSystemMessage?: boolean;
3534
skipAlertSound?: boolean;
3635
createAsHidden?: boolean;
3736
status?: SubscriptionStatus;
3837
inviterUsername?: string;
39-
federation?: {
40-
inviteEventId?: string;
41-
};
4238
} = {},
4339
): Promise<boolean | undefined> => {
4440
const now = new Date();
@@ -109,7 +105,6 @@ export const addUserToRoom = async (
109105
groupMentions: 0,
110106
...(status && { status }),
111107
...(inviterUsername && { inviterUsername }),
112-
...(federation && { federation }),
113108
...autoTranslateConfig,
114109
...getDefaultSubscriptionPref(userToBeAdded as IUser),
115110
});

apps/meteor/app/lib/server/methods/addUsersToRoom.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,16 +107,13 @@ export const addUsersToRoomMethod = async (userId: string, data: { rid: string;
107107

108108
const subscription = await Subscriptions.findOneByRoomIdAndUserId(data.rid, newUser._id);
109109
if (!subscription) {
110-
let inviteOptions: { status?: SubscriptionStatus; inviterUsername?: string; federation?: { inviteEventId?: string } } = {};
110+
let inviteOptions: { status?: SubscriptionStatus; inviterUsername?: string } = {};
111111

112112
if (isRoomNativeFederated(room) && user && newUser.username) {
113-
const inviteResult = await FederationMatrix.inviteUsersToRoom(room, [newUser.username], user);
113+
await FederationMatrix.inviteUsersToRoom(room, [newUser.username], user);
114114
inviteOptions = {
115115
status: 'INVITED',
116116
inviterUsername: user.username,
117-
federation: {
118-
inviteEventId: inviteResult[0].event_id,
119-
},
120117
};
121118
}
122119

apps/meteor/lib/publishFields.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ export const subscriptionFields = {
4444
tunreadUser: 1,
4545
status: 1,
4646
inviterUsername: 1,
47-
federation: 1,
4847

4948
// Omnichannel fields
5049
department: 1,

apps/meteor/server/modules/watchers/watchers.module.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@ export function initWatchers(watcher: DatabaseWatcher, broadcast: BroadcastCallb
139139
| 'tunreadUser'
140140
| 'status'
141141
| 'inviterUsername'
142-
| 'federation'
143142

144143
// Omnichannel fields
145144
| 'department'

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -920,13 +920,15 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS
920920
'u._id': userId,
921921
'status': 'INVITED',
922922
},
923-
{ projection: { _id: 1, rid: 1, federation: 1 } },
923+
{ projection: { _id: 1, rid: 1 } },
924924
);
925925
if (!subscription) {
926926
throw new Error('Subscription not found');
927927
}
928-
if (!subscription.federation?.inviteEventId) {
929-
throw new Error('Invite event ID not found');
928+
929+
const room = await Rooms.findOneById(subscription.rid);
930+
if (!room || !isRoomNativeFederated(room)) {
931+
throw new Error('Room not found or not federated');
930932
}
931933

932934
const user = await Users.findOneById(userId);
@@ -942,10 +944,10 @@ export class FederationMatrix extends ServiceClass implements IFederationMatrixS
942944
const matrixUserId = isUserNativeFederated(user) ? user.federation.mui : `@${user.username}:${this.serverName}`;
943945

944946
if (action === 'accept') {
945-
await federationSDK.acceptInvite(subscription.federation?.inviteEventId, matrixUserId);
947+
await federationSDK.acceptInvite(room.federation.mrid, matrixUserId);
946948
}
947949
if (action === 'reject') {
948-
await federationSDK.rejectInvite(subscription.federation?.inviteEventId, matrixUserId);
950+
await federationSDK.rejectInvite(room.federation.mrid, matrixUserId);
949951
}
950952
}
951953
}

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

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
import { Room } from '@rocket.chat/core-services';
22
import type { Emitter } from '@rocket.chat/emitter';
3-
import type { HomeserverEventSignatures, UserID, RoomID, PduForType, EventID } from '@rocket.chat/federation-sdk';
3+
import type { HomeserverEventSignatures, UserID, RoomID, PduForType } from '@rocket.chat/federation-sdk';
44
import { Logger } from '@rocket.chat/logger';
55
import { Rooms, Subscriptions } from '@rocket.chat/models';
66

77
import { getOrCreateFederatedRoom, getOrCreateFederatedUser } from './helpers';
88

99
const logger = new Logger('federation-matrix:member');
1010

11-
export async function handleInvite(
12-
event: HomeserverEventSignatures['homeserver.matrix.membership']['event'],
13-
eventId: EventID,
14-
): Promise<void> {
11+
export async function handleInvite(event: HomeserverEventSignatures['homeserver.matrix.membership']['event']): Promise<void> {
1512
const { room_id: roomId, sender: senderId, state_key: userId, content } = event;
1613

1714
const inviterUser = await getOrCreateFederatedUser(senderId as UserID);
@@ -69,7 +66,6 @@ export async function handleInvite(
6966
await Room.addUserToRoom(room._id, inviteeUser, inviterUser, {
7067
status: 'INVITED',
7168
inviterUsername: inviterUser.username,
72-
federation: { inviteEventId: eventId },
7369
});
7470
}
7571

@@ -117,11 +113,11 @@ async function handleLeave(event: HomeserverEventSignatures['homeserver.matrix.m
117113
}
118114

119115
export function member(emitter: Emitter<HomeserverEventSignatures>) {
120-
emitter.on('homeserver.matrix.membership', async ({ event, event_id: eventId }) => {
116+
emitter.on('homeserver.matrix.membership', async ({ event }) => {
121117
try {
122118
switch (event.content.membership) {
123119
case 'invite':
124-
await handleInvite(event, eventId);
120+
await handleInvite(event);
125121
break;
126122

127123
case 'join':

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@ export interface IRoomService {
4141
createAsHidden?: boolean;
4242
status?: SubscriptionStatus;
4343
inviterUsername?: string;
44-
federation?: {
45-
inviteEventId?: string;
46-
};
4744
},
4845
): Promise<boolean | undefined>;
4946
removeUserFromRoom(roomId: string, user: IUser, options?: { byUser: Pick<IUser, '_id' | 'username'> }): Promise<void>;
@@ -53,9 +50,6 @@ export interface IRoomService {
5350
user: Pick<IUser, '_id' | 'username'>,
5451
options?: {
5552
skipSystemMessage?: boolean;
56-
federation?: {
57-
inviteEventId?: string;
58-
};
5953
},
6054
): Promise<boolean>;
6155
getValidRoomName(displayName: string, roomId?: string, options?: { allowDuplicates?: boolean }): Promise<string>;

packages/core-typings/src/ISubscription.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,6 @@ export interface ISubscription extends IRocketChatRecord {
7676

7777
status?: SubscriptionStatus;
7878
inviterUsername?: string;
79-
federation?: {
80-
inviteEventId?: string;
81-
};
8279
}
8380

8481
export interface IOmnichannelSubscription extends ISubscription {

0 commit comments

Comments
 (0)