diff --git a/src/components/views/spaces/SpaceTreeLevel.tsx b/src/components/views/spaces/SpaceTreeLevel.tsx index 52508e6320..f799cb02ba 100644 --- a/src/components/views/spaces/SpaceTreeLevel.tsx +++ b/src/components/views/spaces/SpaceTreeLevel.tsx @@ -69,7 +69,7 @@ export class SpaceItem extends React.PureComponent { constructor(props) { super(props); - const collapsed = SpaceTreeLevelLayoutStore.getSpaceCollapsedState( + const collapsed = SpaceTreeLevelLayoutStore.instance.getSpaceCollapsedState( props.space.roomId, this.props.parents, !props.isNested, @@ -88,7 +88,7 @@ export class SpaceItem extends React.PureComponent { } const newCollapsedState = !this.state.collapsed; - SpaceTreeLevelLayoutStore.setSpaceCollapsedState( + SpaceTreeLevelLayoutStore.instance.setSpaceCollapsedState( this.props.space.roomId, this.props.parents, newCollapsedState, diff --git a/src/stores/SpaceTreeLevelLayoutStore.ts b/src/stores/SpaceTreeLevelLayoutStore.ts index 1250fee0b7..424e9f4012 100644 --- a/src/stores/SpaceTreeLevelLayoutStore.ts +++ b/src/stores/SpaceTreeLevelLayoutStore.ts @@ -26,12 +26,21 @@ const getSpaceCollapsedKey = (roomId: string, parents: Set): string => { }; export default class SpaceTreeLevelLayoutStore { - public static setSpaceCollapsedState(roomId: string, parents: Set, collapsed: boolean) { + private static internalInstance: SpaceTreeLevelLayoutStore; + + public static get instance(): SpaceTreeLevelLayoutStore { + if (!SpaceTreeLevelLayoutStore.internalInstance) { + SpaceTreeLevelLayoutStore.internalInstance = new SpaceTreeLevelLayoutStore(); + } + return SpaceTreeLevelLayoutStore.internalInstance; + } + + public setSpaceCollapsedState(roomId: string, parents: Set, collapsed: boolean) { // XXX: localStorage doesn't allow booleans localStorage.setItem(getSpaceCollapsedKey(roomId, parents), collapsed.toString()); } - public static getSpaceCollapsedState(roomId: string, parents: Set, fallback: boolean): boolean { + public getSpaceCollapsedState(roomId: string, parents: Set, fallback: boolean): boolean { const collapsedLocalStorage = localStorage.getItem(getSpaceCollapsedKey(roomId, parents)); // XXX: localStorage doesn't allow booleans return collapsedLocalStorage ? collapsedLocalStorage === "true" : fallback;