Introduce Membership type
This commit is contained in:
parent
3c6fd58628
commit
da99bad7b9
115 changed files with 582 additions and 526 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue