Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Fix spaces null-guard breaking the dispatcher settings watching #6886

Merged
merged 1 commit into from
Sep 29, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions src/stores/SpaceStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
* should not be done when the space switch is done implicitly due to another event like switching room.
*/
public setActiveSpace(space: Room | null, contextSwitch = true) {
if (space === this.activeSpace || (space && !space.isSpaceRoom())) return;
if (!this.matrixClient || space === this.activeSpace || (space && !space.isSpaceRoom())) return;

this._activeSpace = space;
this.emit(UPDATE_SELECTED_SPACE, this.activeSpace);
Expand All @@ -197,7 +197,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
// else if the last viewed room in this space is joined then view that
// else view space home or home depending on what is being clicked on
if (space?.getMyMembership() !== "invite" &&
this.matrixClient?.getRoom(roomId)?.getMyMembership() === "join" &&
this.matrixClient.getRoom(roomId)?.getMyMembership() === "join" &&
this.getSpaceFilteredRoomIds(space).has(roomId)
) {
defaultDispatcher.dispatch({
Expand Down Expand Up @@ -230,7 +230,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
}
}

private async loadSuggestedRooms(space) {
private async loadSuggestedRooms(space: Room): Promise<void> {
const suggestedRooms = await this.fetchSuggestedRooms(space);
if (this._activeSpace === space) {
this._suggestedRooms = suggestedRooms;
Expand Down Expand Up @@ -335,6 +335,8 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
};

private rebuild = throttle(() => {
if (!this.matrixClient) return;

const [visibleSpaces, visibleRooms] = partitionSpacesAndRooms(this.matrixClient.getVisibleRooms());
const [joinedSpaces, invitedSpaces] = visibleSpaces.reduce((arr, s) => {
if (s.getMyMembership() === "join") {
Expand Down Expand Up @@ -751,7 +753,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
}

protected async onAction(payload: ActionPayload) {
if (!spacesEnabled || !this.matrixClient) return;
if (!spacesEnabled) return;
switch (payload.action) {
case "view_room": {
// Don't auto-switch rooms when reacting to a context-switch
Expand Down