remove room from room list when leaving
This commit is contained in:
parent
89461bf69a
commit
644698aed7
3 changed files with 12 additions and 2 deletions
|
@ -35,9 +35,8 @@ export class LeftPanelViewModel extends ViewModel {
|
|||
}
|
||||
|
||||
_mapTileViewModels(rooms, invites) {
|
||||
const joinedRooms = rooms.filterValues(room => room.membership === "join");
|
||||
// join is not commutative, invites will take precedence over rooms
|
||||
return invites.join(joinedRooms).mapValues((roomOrInvite, emitChange) => {
|
||||
return invites.join(rooms).mapValues((roomOrInvite, emitChange) => {
|
||||
const isOpen = this.navigation.path.get("room")?.value === roomOrInvite.id;
|
||||
let vm;
|
||||
if (roomOrInvite.isInvite) {
|
||||
|
|
|
@ -54,6 +54,7 @@ export class Session {
|
|||
this._sessionInfo = sessionInfo;
|
||||
this._rooms = new ObservableMap();
|
||||
this._roomUpdateCallback = (room, params) => this._rooms.update(room.id, params);
|
||||
this._archivedRooms = null;
|
||||
this._invites = new ObservableMap();
|
||||
this._inviteUpdateCallback = (invite, params) => this._invites.update(invite.id, params);
|
||||
this._user = new User(sessionInfo.userId);
|
||||
|
@ -426,6 +427,14 @@ export class Session {
|
|||
this._invites.remove(invite.id);
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
archiveRoomAfterSync(room) {
|
||||
this._rooms.remove(room.id);
|
||||
if (this._archivedRooms) {
|
||||
this._archivedRooms.add(room.id, room);
|
||||
}
|
||||
}
|
||||
|
||||
async obtainSyncLock(syncResponse) {
|
||||
const toDeviceEvents = syncResponse.to_device?.events;
|
||||
if (Array.isArray(toDeviceEvents) && toDeviceEvents.length) {
|
||||
|
|
|
@ -295,6 +295,8 @@ export class Sync {
|
|||
// so the room will be found if looking for it when the invite
|
||||
// is removed
|
||||
this._session.addRoomAfterSync(rs.room);
|
||||
} else if (rs.membership === "leave") {
|
||||
this._session.archiveRoomAfterSync(rs.room);
|
||||
}
|
||||
}
|
||||
// emit invite related events after txn has been closed
|
||||
|
|
Reference in a new issue