File tree Expand file tree Collapse file tree 2 files changed +46
-0
lines changed
packages/federation-sdk/src Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -274,4 +274,8 @@ export class FederationSDK {
274274 notifyRemoteServerUp ( ...args : Parameters < typeof this . federationService . notifyRemoteServerUp > ) {
275275 return this . federationService . notifyRemoteServerUp ( ...args ) ;
276276 }
277+
278+ updateRoomMembership ( ...args : Parameters < typeof this . roomService . updateRoomMembership > ) {
279+ return this . roomService . updateRoomMembership ( ...args ) ;
280+ }
277281}
Original file line number Diff line number Diff line change @@ -1533,4 +1533,46 @@ export class RoomService {
15331533 return null ;
15341534 }
15351535 }
1536+
1537+ async updateRoomMembership ( {
1538+ roomId,
1539+ userId,
1540+ membership,
1541+ content,
1542+ } : {
1543+ roomId : RoomID ;
1544+ userId : UserID ;
1545+ membership : 'join' | 'leave' | 'ban' ;
1546+ content ?: PduForType < 'm.room.member' > [ 'content' ] ;
1547+ } ) {
1548+ const roomVersion = await this . stateService . getRoomVersion ( roomId ) ;
1549+
1550+ const membershipEvent = await this . stateService . buildEvent < 'm.room.member' > (
1551+ {
1552+ type : 'm.room.member' ,
1553+ content : {
1554+ membership,
1555+ ...content ,
1556+ } ,
1557+ room_id : roomId ,
1558+ state_key : userId ,
1559+ auth_events : [ ] ,
1560+ depth : 0 ,
1561+ prev_events : [ ] ,
1562+ origin_server_ts : Date . now ( ) ,
1563+ sender : userId ,
1564+ } ,
1565+ roomVersion ,
1566+ ) ;
1567+
1568+ await this . stateService . handlePdu ( membershipEvent ) ;
1569+
1570+ if ( membershipEvent . rejected ) {
1571+ throw new Error ( `Failed to update room membership: ${ membershipEvent . rejectReason } ` ) ;
1572+ }
1573+
1574+ void this . federationService . sendEventToAllServersInRoom ( membershipEvent ) ;
1575+
1576+ return membershipEvent . eventId ;
1577+ }
15361578}
You can’t perform that action at this time.
0 commit comments