Skip to content

Commit 0c41fdf

Browse files
authored
refactor: standardize event creation in RoomService and PersistentEve… (#188)
1 parent 8958031 commit 0c41fdf

File tree

11 files changed

+629
-1216
lines changed

11 files changed

+629
-1216
lines changed

packages/core/src/events/m.room.tombstone.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ declare module './eventBase' {
2020
}
2121

2222
export type TombstoneAuthEvents = {
23-
'm.room.create': string | undefined;
24-
'm.room.power_levels': string | undefined;
25-
'm.room.member': string | undefined;
23+
'm.room.create': string;
24+
'm.room.power_levels': string;
25+
'm.room.member': string;
2626
};
2727

2828
type RoomTombstoneEventProps = {

packages/federation-sdk/src/services/invite.service.ts

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -41,27 +41,32 @@ export class InviteService {
4141

4242
const roomInformation = await stateService.getRoomInformation(roomId);
4343

44-
const inviteEvent = isDirectMessage
45-
? PersistentEventFactory.newDirectMessageMembershipEvent(
46-
roomId,
47-
sender,
48-
userId,
49-
'invite',
50-
roomInformation,
51-
)
52-
: PersistentEventFactory.newMembershipEvent(
53-
roomId,
54-
sender,
55-
userId,
56-
'invite',
57-
roomInformation,
58-
);
59-
60-
await stateService.addAuthEvents(inviteEvent);
61-
62-
await stateService.addPrevEvents(inviteEvent);
63-
64-
await stateService.signEvent(inviteEvent);
44+
// Extract displayname from userId for direct messages
45+
const displayname = isDirectMessage
46+
? userId.split(':').shift()?.slice(1)
47+
: undefined;
48+
49+
const inviteEvent = await stateService.buildEvent<'m.room.member'>(
50+
{
51+
type: 'm.room.member',
52+
content: {
53+
membership: 'invite',
54+
...(isDirectMessage && {
55+
is_direct: true,
56+
displayname: displayname,
57+
}),
58+
},
59+
room_id: roomId,
60+
state_key: userId,
61+
auth_events: [],
62+
depth: 0,
63+
prev_events: [],
64+
origin_server_ts: Date.now(),
65+
sender: sender,
66+
},
67+
68+
roomInformation.room_version,
69+
);
6570

6671
// SPEC: Invites a remote user to a room. Once the event has been signed by both the inviting homeserver and the invited homeserver, it can be sent to all of the servers in the room by the inviting homeserver.
6772

0 commit comments

Comments
 (0)