Fix recent workspaces when open in new window

This commit is contained in:
Gregory Schier
2025-06-06 14:10:30 -07:00
parent fcda6f8d32
commit f62e90297d
2 changed files with 20 additions and 16 deletions

View File

@@ -26,18 +26,23 @@ export function useRecentWorkspaces() {
export function useSubscribeRecentWorkspaces() { export function useSubscribeRecentWorkspaces() {
useEffect(() => { useEffect(() => {
return jotaiStore.sub(activeWorkspaceIdAtom, async () => { const unsub = jotaiStore.sub(activeWorkspaceIdAtom, updateRecentWorkspaces);
const activeWorkspaceId = jotaiStore.get(activeWorkspaceIdAtom); updateRecentWorkspaces().catch(console.error); // Update when opened in a new window
if (activeWorkspaceId == null) return; return unsub;
const key = kvKey();
const recentIds = getKeyValue<string[]>({ namespace, key, fallback });
if (recentIds[0] === activeWorkspaceId) return; // Short-circuit
const withoutActiveId = recentIds.filter((id) => id !== activeWorkspaceId);
const value = [activeWorkspaceId, ...withoutActiveId];
await setKeyValue({ namespace, key, value });
});
}, []); }, []);
} }
async function updateRecentWorkspaces() {
const activeWorkspaceId = jotaiStore.get(activeWorkspaceIdAtom);
if (activeWorkspaceId == null) return;
const key = kvKey();
const recentIds = getKeyValue<string[]>({ namespace, key, fallback });
if (recentIds[0] === activeWorkspaceId) return; // Short-circuit
const withoutActiveId = recentIds.filter((id) => id !== activeWorkspaceId);
const value = [activeWorkspaceId, ...withoutActiveId];
console.log('Recent workspaces update', activeWorkspaceId);
await setKeyValue({ namespace, key, value });
}

View File

@@ -30,9 +30,8 @@ export function getKeyValueRaw({
key: string | string[]; key: string | string[];
}) { }) {
const key = buildKeyValueKey(keyOrKeys); const key = buildKeyValueKey(keyOrKeys);
const kv = jotaiStore const keyValues = jotaiStore.get(keyValuesAtom);
.get(keyValuesAtom) const kv = keyValues.find((kv) => kv.namespace === namespace && kv?.key === key);
.find((kv) => kv.namespace === namespace && kv?.key === key);
return kv ?? null; return kv ?? null;
} }