Skip to content

Commit 0663391

Browse files
committed
feat: implement debounced fetching for projects in project store
1 parent a1b7e2f commit 0663391

File tree

1 file changed

+37
-33
lines changed

1 file changed

+37
-33
lines changed

apps/web/stores/project-store.ts

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,42 @@ export const useProjectStore = create<ProjectState>()(
7676
}
7777
});
7878

79+
const debouncedFetchProjects = debounce(async () => {
80+
try {
81+
set((state) => ({
82+
projectsContext: {
83+
...state.projectsContext,
84+
loading: true,
85+
error: null,
86+
},
87+
}));
88+
const projectsList = await projectApiClient.list();
89+
set((state) => ({
90+
projectsContext: {
91+
...state.projectsContext,
92+
data: projectsList,
93+
error: null,
94+
},
95+
}));
96+
} catch (err) {
97+
const errorMessage = handleApiError(err);
98+
set((state) => ({
99+
projectsContext: {
100+
...state.projectsContext,
101+
error: errorMessage,
102+
},
103+
}));
104+
console.error('Error loading projects:', err);
105+
} finally {
106+
set((state) => ({
107+
projectsContext: {
108+
...state.projectsContext,
109+
loading: false,
110+
},
111+
}));
112+
}
113+
});
114+
79115
return {
80116
// Initial state
81117
currentProjectName: null,
@@ -92,39 +128,7 @@ export const useProjectStore = create<ProjectState>()(
92128
},
93129

94130
fetchProjects: async () => {
95-
try {
96-
set((state) => ({
97-
projectsContext: {
98-
...state.projectsContext,
99-
loading: true,
100-
error: null,
101-
},
102-
}));
103-
const projectsList = await projectApiClient.list();
104-
set((state) => ({
105-
projectsContext: {
106-
...state.projectsContext,
107-
data: projectsList,
108-
error: null,
109-
},
110-
}));
111-
} catch (err) {
112-
const errorMessage = handleApiError(err);
113-
set((state) => ({
114-
projectsContext: {
115-
...state.projectsContext,
116-
error: errorMessage,
117-
},
118-
}));
119-
console.error('Error loading projects:', err);
120-
} finally {
121-
set((state) => ({
122-
projectsContext: {
123-
...state.projectsContext,
124-
loading: false,
125-
},
126-
}));
127-
}
131+
debouncedFetchProjects();
128132
},
129133

130134
clearErrors: () => {

0 commit comments

Comments
 (0)