Adapt Membership usage for the change to an enum KnownMembership

This commit is contained in:
Andy Balaam 2024-03-12 14:52:54 +00:00
parent da99bad7b9
commit 34559d2a89
115 changed files with 764 additions and 593 deletions

View file

@ -25,6 +25,7 @@ import {
MatrixEvent,
ClientEvent,
ISendEventResponse,
KnownMembership,
} from "matrix-js-sdk/src/matrix";
import { logger } from "matrix-js-sdk/src/logger";
@ -255,8 +256,8 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
// else view space home or home depending on what is being clicked on
if (
roomId &&
cliSpace?.getMyMembership() !== Membership.Invite &&
this.matrixClient.getRoom(roomId)?.getMyMembership() === Membership.Join &&
cliSpace?.getMyMembership() !== KnownMembership.Invite &&
this.matrixClient.getRoom(roomId)?.getMyMembership() === KnownMembership.Join &&
this.isRoomInSpace(space, roomId)
) {
defaultDispatcher.dispatch<ViewRoomPayload>({
@ -325,7 +326,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
.filter((roomInfo) => {
return (
roomInfo.room_type !== RoomType.Space &&
this.matrixClient.getRoom(roomInfo.room_id)?.getMyMembership() !== Membership.Join
this.matrixClient?.getRoom(roomInfo.room_id)?.getMyMembership() !== KnownMembership.Join
);
})
.map((roomInfo) => ({
@ -368,7 +369,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
return history[history.length - 1];
})
.filter((room) => {
return room?.getMyMembership() === Membership.Join || room?.getMyMembership() === Membership.Invite;
return (
room?.getMyMembership() === KnownMembership.Join ||
room?.getMyMembership() === KnownMembership.Invite
);
}) || []
);
}
@ -379,7 +383,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
public getChildSpaces(spaceId: string): Room[] {
// don't show invited subspaces as they surface at the top level for better visibility
return this.getChildren(spaceId).filter((r) => r.isSpaceRoom() && r.getMyMembership() === Membership.Join);
return this.getChildren(spaceId).filter((r) => r.isSpaceRoom() && r.getMyMembership() === KnownMembership.Join);
}
public getParents(roomId: string, canonicalOnly = false): Room[] {
@ -593,7 +597,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
private rebuildParentMap = (): void => {
if (!this.matrixClient) return;
const joinedSpaces = this.matrixClient.getVisibleRooms(this._msc3946ProcessDynamicPredecessor).filter((r) => {
return r.isSpaceRoom() && r.getMyMembership() === Membership.Join;
return r.isSpaceRoom() && r.getMyMembership() === KnownMembership.Join;
});
this.parentMap = new EnhancedMap<string, Set<string>>();
@ -717,12 +721,12 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
return (
!this.parentMap.get(room.roomId)?.size || // put all orphaned rooms in the Home Space
!!DMRoomMap.shared().getUserIdForRoomId(room.roomId) || // put all DMs in the Home Space
room.getMyMembership() === Membership.Invite
room.getMyMembership() === KnownMembership.Invite
); // put all invites in the Home Space
};
private static isInSpace(member: RoomMember): boolean {
return member.membership === Membership.Join || member.membership === Membership.Invite;
private static isInSpace(member?: RoomMember | null): boolean {
return member?.membership === KnownMembership.Join || member?.membership === KnownMembership.Invite;
}
// Method for resolving the impact of a single user's membership change in the given Space and its hierarchy
@ -766,7 +770,8 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
const hiddenChildren = new EnhancedMap<string, Set<string>>();
visibleRooms.forEach((room) => {
if (![Membership.Join, Membership.Invite].includes(room.getMyMembership())) return;
if (!([KnownMembership.Join, KnownMembership.Invite] as Array<string>).includes(room.getMyMembership()))
return;
this.getParents(room.roomId).forEach((parent) => {
hiddenChildren.getOrCreate(parent.roomId, new Set()).add(room.roomId);
});
@ -796,7 +801,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
space
?.getMembers()
.filter((m) => {
return m.membership === Membership.Join || m.membership === Membership.Invite;
return m.membership === KnownMembership.Join || m.membership === KnownMembership.Invite;
})
.map((m) => m.userId),
);
@ -924,7 +929,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
if (!room.isSpaceRoom()) {
this.onRoomsUpdate();
if (membership === Membership.Join) {
if (membership === KnownMembership.Join) {
// the user just joined a room, remove it from the suggested list if it was there
const numSuggestedRooms = this._suggestedRooms.length;
this._suggestedRooms = this._suggestedRooms.filter((r) => r.room_id !== room.roomId);
@ -936,7 +941,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
// if the room currently being viewed was just joined then switch to its related space
if (
newMembership === Membership.Join &&
newMembership === KnownMembership.Join &&
room.roomId === SdkContextClass.instance.roomViewStore.getRoomId()
) {
this.switchSpaceIfNeeded(room.roomId);
@ -946,13 +951,13 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
}
// Space
if (membership === Membership.Invite) {
if (membership === KnownMembership.Invite) {
const len = this._invitedSpaces.size;
this._invitedSpaces.add(room);
if (len !== this._invitedSpaces.size) {
this.emit(UPDATE_INVITED_SPACES, this.invitedSpaces);
}
} else if (oldMembership === Membership.Invite && membership !== Membership.Join) {
} else if (oldMembership === KnownMembership.Invite && membership !== KnownMembership.Join) {
if (this._invitedSpaces.delete(room)) {
this.emit(UPDATE_INVITED_SPACES, this.invitedSpaces);
}
@ -965,10 +970,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
this.emit(room.roomId);
}
if (membership === Membership.Join && room.roomId === SdkContextClass.instance.roomViewStore.getRoomId()) {
if (membership === KnownMembership.Join && room.roomId === SdkContextClass.instance.roomViewStore.getRoomId()) {
// if the user was looking at the space and then joined: select that space
this.setActiveSpace(room.roomId, false);
} else if (membership === Membership.Leave && room.roomId === this.activeSpace) {
} else if (membership === KnownMembership.Leave && room.roomId === this.activeSpace) {
// user's active space has gone away, go back to home
this.goToFirstSpace(true);
}
@ -1003,7 +1008,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
if (
room.roomId === this.activeSpace && // current space
target?.getMyMembership() !== Membership.Join && // target not joined
target?.getMyMembership() !== KnownMembership.Join && // target not joined
ev.getPrevContent().suggested !== ev.getContent().suggested // suggested flag changed
) {
this.loadSuggestedRooms(room);