Introduce Membership type

This commit is contained in:
Stanislav Demydiuk 2024-03-11 17:16:53 +00:00 committed by Andy Balaam
parent 3c6fd58628
commit da99bad7b9
115 changed files with 582 additions and 526 deletions

View file

@ -255,8 +255,8 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
// else view space home or home depending on what is being clicked on
if (
roomId &&
cliSpace?.getMyMembership() !== "invite" &&
this.matrixClient.getRoom(roomId)?.getMyMembership() === "join" &&
cliSpace?.getMyMembership() !== Membership.Invite &&
this.matrixClient.getRoom(roomId)?.getMyMembership() === Membership.Join &&
this.isRoomInSpace(space, roomId)
) {
defaultDispatcher.dispatch<ViewRoomPayload>({
@ -325,7 +325,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
.filter((roomInfo) => {
return (
roomInfo.room_type !== RoomType.Space &&
this.matrixClient?.getRoom(roomInfo.room_id)?.getMyMembership() !== "join"
this.matrixClient.getRoom(roomInfo.room_id)?.getMyMembership() !== Membership.Join
);
})
.map((roomInfo) => ({
@ -368,7 +368,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
return history[history.length - 1];
})
.filter((room) => {
return room?.getMyMembership() === "join" || room?.getMyMembership() === "invite";
return room?.getMyMembership() === Membership.Join || room?.getMyMembership() === Membership.Invite;
}) || []
);
}
@ -379,7 +379,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() === "join");
return this.getChildren(spaceId).filter((r) => r.isSpaceRoom() && r.getMyMembership() === Membership.Join);
}
public getParents(roomId: string, canonicalOnly = false): Room[] {
@ -593,7 +593,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() === "join";
return r.isSpaceRoom() && r.getMyMembership() === Membership.Join;
});
this.parentMap = new EnhancedMap<string, Set<string>>();
@ -717,12 +717,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() === "invite"
room.getMyMembership() === Membership.Invite
); // put all invites in the Home Space
};
private static isInSpace(member?: RoomMember | null): boolean {
return member?.membership === "join" || member?.membership === "invite";
private static isInSpace(member: RoomMember): boolean {
return member.membership === Membership.Join || member.membership === Membership.Invite;
}
// Method for resolving the impact of a single user's membership change in the given Space and its hierarchy
@ -766,7 +766,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
const hiddenChildren = new EnhancedMap<string, Set<string>>();
visibleRooms.forEach((room) => {
if (!["join", "invite"].includes(room.getMyMembership())) return;
if (![Membership.Join, Membership.Invite].includes(room.getMyMembership())) return;
this.getParents(room.roomId).forEach((parent) => {
hiddenChildren.getOrCreate(parent.roomId, new Set()).add(room.roomId);
});
@ -796,7 +796,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
space
?.getMembers()
.filter((m) => {
return m.membership === "join" || m.membership === "invite";
return m.membership === Membership.Join || m.membership === Membership.Invite;
})
.map((m) => m.userId),
);
@ -924,7 +924,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
if (!room.isSpaceRoom()) {
this.onRoomsUpdate();
if (membership === "join") {
if (membership === Membership.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);
@ -935,7 +935,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
}
// if the room currently being viewed was just joined then switch to its related space
if (newMembership === "join" && room.roomId === SdkContextClass.instance.roomViewStore.getRoomId()) {
if (
newMembership === Membership.Join &&
room.roomId === SdkContextClass.instance.roomViewStore.getRoomId()
) {
this.switchSpaceIfNeeded(room.roomId);
}
}
@ -943,13 +946,13 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
}
// Space
if (membership === "invite") {
if (membership === Membership.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 === "invite" && membership !== "join") {
} else if (oldMembership === Membership.Invite && membership !== Membership.Join) {
if (this._invitedSpaces.delete(room)) {
this.emit(UPDATE_INVITED_SPACES, this.invitedSpaces);
}
@ -962,10 +965,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
this.emit(room.roomId);
}
if (membership === "join" && room.roomId === SdkContextClass.instance.roomViewStore.getRoomId()) {
if (membership === Membership.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 === "leave" && room.roomId === this.activeSpace) {
} else if (membership === Membership.Leave && room.roomId === this.activeSpace) {
// user's active space has gone away, go back to home
this.goToFirstSpace(true);
}
@ -1000,7 +1003,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
if (
room.roomId === this.activeSpace && // current space
target?.getMyMembership() !== "join" && // target not joined
target?.getMyMembership() !== Membership.Join && // target not joined
ev.getPrevContent().suggested !== ev.getContent().suggested // suggested flag changed
) {
this.loadSuggestedRooms(room);