diff --git a/frontend/app/store/global.ts b/frontend/app/store/global.ts index c8a7daae23..e80c3e7bc9 100644 --- a/frontend/app/store/global.ts +++ b/frontend/app/store/global.ts @@ -23,7 +23,7 @@ let atoms: GlobalAtomsType; let globalEnvironment: "electron" | "renderer"; const blockComponentModelMap = new Map(); const Counters = new Map(); -const ConnStatusMap = new Map>(); +const ConnStatusMapAtom = atom(new Map>()); type GlobalInitOptions = { tabId: string; @@ -135,7 +135,8 @@ function initGlobalAtoms(initOpts: GlobalInitOptions) { const typeAheadModalAtom = atom({}); const modalOpen = atom(false); const allConnStatusAtom = atom((get) => { - const connStatuses = Array.from(ConnStatusMap.values()).map((atom) => get(atom)); + const connStatusMap = get(ConnStatusMapAtom); + const connStatuses = Array.from(connStatusMap.values()).map((atom) => get(atom)); return connStatuses; }); const flashErrorsAtom = atom([]); @@ -579,7 +580,8 @@ function subscribeToConnEvents() { } function getConnStatusAtom(conn: string): PrimitiveAtom { - let rtn = ConnStatusMap.get(conn); + const connStatusMap = globalStore.get(ConnStatusMapAtom); + let rtn = connStatusMap.get(conn); if (rtn == null) { if (isBlank(conn)) { // create a fake "local" status atom that's always connected @@ -605,7 +607,9 @@ function getConnStatusAtom(conn: string): PrimitiveAtom { }; rtn = atom(connStatus); } - ConnStatusMap.set(conn, rtn); + const newConnStatusMap = new Map(connStatusMap); + newConnStatusMap.set(conn, rtn); + globalStore.set(ConnStatusMapAtom, newConnStatusMap); } return rtn; }