fix: explore page loses remote instance spaces on reload

fetchSpaces() now awaits _autoConnectDone before reading the instance
list, preventing a race where it would fetch with an empty/incomplete
set of connected instances during page reload.
This commit is contained in:
Jannis Braun
2026-03-09 04:02:01 +01:00
parent 450df432b2
commit fccfea8b2e
+18
View File
@@ -50,6 +50,24 @@ export const useExploreStore = create<ExploreState>((set, get) => ({
fetchSpaces: async (query?: string) => {
set({ isLoading: true, error: null });
// Wait for autoConnectAll to finish if it hasn't yet.
// This prevents fetching with an incomplete/empty instance list on page reload.
if (!useInstanceStore.getState()._autoConnectDone) {
await new Promise<void>((resolve) => {
const unsub = useInstanceStore.subscribe((state) => {
if (state._autoConnectDone) {
unsub();
resolve();
}
});
// Re-check after subscribing to avoid TOCTOU race
if (useInstanceStore.getState()._autoConnectDone) {
unsub();
resolve();
}
});
}
try {
const instances = useInstanceStore.getState().instances;
const connectedInstances = instances.filter(i => i.status === 'connected');