fix project list cacheing issue

This commit is contained in:
Douglas 2026-05-05 10:57:20 +01:00
parent 048e960852
commit 99ba772ea2
2 changed files with 41 additions and 33 deletions

View file

@ -292,7 +292,9 @@ const ToolSelect = forwardRef<
(keyword?: string, opts?: { force?: boolean }) => {
const u = email ?? null;
const snap = toolSelectCatalogSnapshot;
if (!opts?.force && snap && snap.email === u && snap.configInfo) {
const hydratedFromCache =
!opts?.force && snap && snap.email === u && snap.configInfo;
if (hydratedFromCache) {
setIntegrations(
buildIntegrationsFromConfigInfo(
snap.configInfo,
@ -301,7 +303,6 @@ const ToolSelect = forwardRef<
addOption
)
);
return;
}
proxyFetchGet('/api/v1/config/info')
@ -326,7 +327,7 @@ const ToolSelect = forwardRef<
})
.catch((error) => {
console.error('Error fetching integrations:', error);
setIntegrations([]);
if (!hydratedFromCache) setIntegrations([]);
});
},
[addOption, email, t]
@ -336,9 +337,10 @@ const ToolSelect = forwardRef<
(opts?: { force?: boolean }) => {
const u = email ?? null;
const snap = toolSelectCatalogSnapshot;
if (!opts?.force && snap && snap.email === u && snap.hasUserMcps) {
const hydratedFromCache =
!opts?.force && snap && snap.email === u && snap.hasUserMcps;
if (hydratedFromCache) {
setUserMcpList(snap.userMcps);
return;
}
proxyFetchGet('/api/v1/mcp/users')
@ -361,7 +363,7 @@ const ToolSelect = forwardRef<
})
.catch((error) => {
console.error('Error fetching installed MCPs:', error);
setUserMcpList([]);
if (!hydratedFromCache) setUserMcpList([]);
});
},
[email]

View file

@ -126,33 +126,38 @@ export default function GroupedHistoryView({
}
}, [projects, email, triggerKey]);
const loadProjects = useCallback(async () => {
setLoading(true);
const u = email ?? null;
try {
const snapshotSetter: Dispatch<SetStateAction<ProjectGroupType[]>> = (
action
) => {
setProjects((prev) => {
const next =
typeof action === 'function'
? (action as (p: ProjectGroupType[]) => ProjectGroupType[])(prev)
: action;
groupedHistorySnapshot = {
email: u,
projects: next,
triggerKey,
};
return next;
});
};
await fetchGroupedHistoryTasks(snapshotSetter);
} catch (error) {
console.error('Failed to load grouped projects:', error);
} finally {
setLoading(false);
}
}, [email, triggerKey]);
const loadProjects = useCallback(
async (opts?: { silent?: boolean }) => {
if (!opts?.silent) setLoading(true);
const u = email ?? null;
try {
const snapshotSetter: Dispatch<SetStateAction<ProjectGroupType[]>> = (
action
) => {
setProjects((prev) => {
const next =
typeof action === 'function'
? (action as (p: ProjectGroupType[]) => ProjectGroupType[])(
prev
)
: action;
groupedHistorySnapshot = {
email: u,
projects: next,
triggerKey,
};
return next;
});
};
await fetchGroupedHistoryTasks(snapshotSetter);
} catch (error) {
console.error('Failed to load grouped projects:', error);
} finally {
if (!opts?.silent) setLoading(false);
}
},
[email, triggerKey]
);
const onDelete = (historyId: string) => {
try {
@ -315,6 +320,7 @@ export default function GroupedHistoryView({
if (snap && snap.email === u && snap.triggerKey === triggerKey) {
setProjects(snap.projects);
setLoading(false);
void loadProjects({ silent: true });
return;
}
void loadProjects();