@@ -46,8 +46,8 @@ import {
4646 FILTER_RELATED_BY_SENDERS ,
4747 ThreadFilterType ,
4848} from "./thread" ;
49- import { Method } from "../http-api" ;
5049import { TypedEventEmitter } from "./typed-event-emitter" ;
50+ import { IStateEventWithRoomId } from "../@types/search" ;
5151
5252// These constants are used as sane defaults when the homeserver doesn't support
5353// the m.room_versions capability. In practice, KNOWN_SAFE_ROOM_VERSION should be
@@ -788,16 +788,9 @@ export class Room extends TypedEventEmitter<EmittedEvents, RoomEventHandlerMap>
788788 }
789789 }
790790
791- private async loadMembersFromServer ( ) : Promise < IEvent [ ] > {
791+ private async loadMembersFromServer ( ) : Promise < IStateEventWithRoomId [ ] > {
792792 const lastSyncToken = this . client . store . getSyncToken ( ) ;
793- const queryString = utils . encodeParams ( {
794- not_membership : "leave" ,
795- at : lastSyncToken ,
796- } ) ;
797- const path = utils . encodeUri ( "/rooms/$roomId/members?" + queryString ,
798- { $roomId : this . roomId } ) ;
799- const http = this . client . http ;
800- const response = await http . authedRequest < { chunk : IEvent [ ] } > ( undefined , Method . Get , path ) ;
793+ const response = await this . client . members ( this . roomId , undefined , "leave" , lastSyncToken ) ;
801794 return response . chunk ;
802795 }
803796
@@ -806,12 +799,13 @@ export class Room extends TypedEventEmitter<EmittedEvents, RoomEventHandlerMap>
806799 let fromServer = false ;
807800 let rawMembersEvents = await this . client . store . getOutOfBandMembers ( this . roomId ) ;
808801 // If the room is encrypted, we always fetch members from the server at
809- // least once, in case the latest state wasn't persisted properly. Note
802+ // least once, in case the latest state wasn't persisted properly. Note
810803 // that this function is only called once (unless loading the members
811804 // fails), since loadMembersIfNeeded always returns this.membersPromise
812805 // if set, which will be the result of the first (successful) call.
813806 if ( rawMembersEvents === null ||
814- ( this . client . isCryptoEnabled ( ) && this . client . isRoomEncrypted ( this . roomId ) ) ) {
807+ ( this . client . isCryptoEnabled ( ) && this . client . isRoomEncrypted ( this . roomId ) )
808+ ) {
815809 fromServer = true ;
816810 rawMembersEvents = await this . loadMembersFromServer ( ) ;
817811 logger . log ( `LL: got ${ rawMembersEvents . length } ` +
@@ -857,7 +851,7 @@ export class Room extends TypedEventEmitter<EmittedEvents, RoomEventHandlerMap>
857851 if ( fromServer ) {
858852 const oobMembers = this . currentState . getMembers ( )
859853 . filter ( ( m ) => m . isOutOfBand ( ) )
860- . map ( ( m ) => m . events . member . event as IEvent ) ;
854+ . map ( ( m ) => m . events . member . event as IStateEventWithRoomId ) ;
861855 logger . log ( `LL: telling store to write ${ oobMembers . length } `
862856 + ` members for room ${ this . roomId } ` ) ;
863857 const store = this . client . store ;
0 commit comments