fix: wait for zustand hydration before workspace initialization

Fix blank page on first load via `ccw view` by waiting for zustand persist
hydration to complete before initializing workspace.

- Add _hasHydrated state tracking in workflowStore
- Add setHasHydrated action to mark hydration complete
- Update AppShell to wait for hydration before calling switchWorkspace
- Ensures projectPath is properly restored from localStorage before queries execute
This commit is contained in:
catlog22
2026-03-04 10:56:07 +08:00
parent 26bda9c634
commit 5e96722c09
3 changed files with 22 additions and 1 deletions

View File

@@ -56,6 +56,9 @@ const initialState: WorkflowState = {
// Filters and sorting
filters: defaultFilters,
sorting: defaultSorting,
// Hydration state (internal)
_hasHydrated: false,
};
export const useWorkflowStore = create<WorkflowStore>()(
@@ -414,6 +417,10 @@ export const useWorkflowStore = create<WorkflowStore>()(
set({ _invalidateQueriesCallback: callback }, false, 'registerQueryInvalidator');
},
setHasHydrated: (state: boolean) => {
set({ _hasHydrated: state }, false, 'setHasHydrated');
},
// ========== Filters and Sorting ==========
setFilters: (filters: Partial<WorkflowFilters>) => {
@@ -538,6 +545,8 @@ export const useWorkflowStore = create<WorkflowStore>()(
console.error('[WorkflowStore] Rehydration error:', error);
return;
}
// Mark hydration as complete
useWorkflowStore.getState().setHasHydrated(true);
if (state?.projectPath) {
if (process.env.NODE_ENV === 'development') {
// eslint-disable-next-line no-console