When accepting DM from People metaspace don't switch to Home (#7272)
							parent
							
								
									37bf85489d
								
							
						
					
					
						commit
						3b9e39ffca
					
				| 
						 | 
				
			
			@ -605,23 +605,22 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
 | 
			
		|||
    private switchToRelatedSpace = (roomId: string) => {
 | 
			
		||||
        if (this.suggestedRooms.find(r => r.room_id === roomId)) return;
 | 
			
		||||
 | 
			
		||||
        let parent = this.getCanonicalParent(roomId);
 | 
			
		||||
        // try to find the canonical parent first
 | 
			
		||||
        let parent: SpaceKey = this.getCanonicalParent(roomId)?.roomId;
 | 
			
		||||
 | 
			
		||||
        // otherwise, try to find a root space which contains this room
 | 
			
		||||
        if (!parent) {
 | 
			
		||||
            parent = this.rootSpaces.find(s => this.spaceFilteredRooms.get(s.roomId)?.has(roomId));
 | 
			
		||||
            parent = this.rootSpaces.find(s => this.spaceFilteredRooms.get(s.roomId)?.has(roomId))?.roomId;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // otherwise, try to find a metaspace which contains this room
 | 
			
		||||
        if (!parent) {
 | 
			
		||||
            const parentIds = Array.from(this.parentMap.get(roomId) || []);
 | 
			
		||||
            for (const parentId of parentIds) {
 | 
			
		||||
                const room = this.matrixClient.getRoom(parentId);
 | 
			
		||||
                if (room) {
 | 
			
		||||
                    parent = room;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // search meta spaces in reverse as Home is the first and least specific one
 | 
			
		||||
            parent = [...this.enabledMetaSpaces].reverse().find(s => this.getSpaceFilteredRoomIds(s).has(roomId));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // don't trigger a context switch when we are switching a space to match the chosen room
 | 
			
		||||
        this.setActiveSpace(parent?.roomId ?? MetaSpace.Home, false); // TODO
 | 
			
		||||
        this.setActiveSpace(parent ?? MetaSpace.Home, false); // TODO
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    private onRoom = (room: Room, newMembership?: string, oldMembership?: string) => {
 | 
			
		||||
| 
						 | 
				
			
			@ -848,10 +847,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
 | 
			
		|||
                    // Don't context switch when navigating to the space room
 | 
			
		||||
                    // as it will cause you to end up in the wrong room
 | 
			
		||||
                    this.setActiveSpace(room.roomId, false);
 | 
			
		||||
                } else if (
 | 
			
		||||
                    (!this.allRoomsInHome || this.activeSpace[0] === "!") &&
 | 
			
		||||
                    !this.getSpaceFilteredRoomIds(this.activeSpace).has(roomId)
 | 
			
		||||
                ) {
 | 
			
		||||
                } else if (!this.getSpaceFilteredRoomIds(this.activeSpace).has(roomId)) {
 | 
			
		||||
                    this.switchToRelatedSpace(roomId);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -810,11 +810,11 @@ describe("SpaceStore", () => {
 | 
			
		|||
            expect(store.activeSpace).toBe(space1);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it("switch to home for orphaned room", async () => {
 | 
			
		||||
        it("switch to other rooms for orphaned room", async () => {
 | 
			
		||||
            viewRoom(room1);
 | 
			
		||||
            store.setActiveSpace(space1, false);
 | 
			
		||||
            viewRoom(orphan1);
 | 
			
		||||
            expect(store.activeSpace).toBe(MetaSpace.Home);
 | 
			
		||||
            expect(store.activeSpace).toBe(MetaSpace.Orphans);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it("switch to first space when selected metaspace is disabled", async () => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue