Lazy load SEO project diagnostics
This commit is contained in:
parent
74abe909bd
commit
bcc3d9e00e
|
|
@ -10005,19 +10005,19 @@ export function App() {
|
|||
setPatchArtifacts(Object.fromEntries(patchEntries));
|
||||
}
|
||||
|
||||
async function loadModelProviderStatuses(projectList: ProjectSummary[]) {
|
||||
const statusEntries = await Promise.all(
|
||||
projectList.map(async (project) => {
|
||||
async function loadModelProviderStatusForProject(projectId: string) {
|
||||
try {
|
||||
const result = await fetchModelProviderStatus(project.id);
|
||||
return [project.id, result.modelProvider] as const;
|
||||
const result = await fetchModelProviderStatus(projectId);
|
||||
setModelProviderStatuses((currentStatuses) => ({
|
||||
...currentStatuses,
|
||||
[projectId]: result.modelProvider
|
||||
}));
|
||||
} catch {
|
||||
return [project.id, null] as const;
|
||||
setModelProviderStatuses((currentStatuses) => ({
|
||||
...currentStatuses,
|
||||
[projectId]: null
|
||||
}));
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
setModelProviderStatuses(Object.fromEntries(statusEntries));
|
||||
}
|
||||
|
||||
async function loadExternalServices() {
|
||||
|
|
@ -10243,7 +10243,9 @@ export function App() {
|
|||
try {
|
||||
const result = await fetchProjects();
|
||||
setProjects(result.projects);
|
||||
await Promise.all([
|
||||
setProjectsLoading(false);
|
||||
|
||||
void Promise.all([
|
||||
loadScanSummaries(result.projects),
|
||||
loadSemanticAnalyses(result.projects),
|
||||
loadContextReviews(result.projects),
|
||||
|
|
@ -10261,12 +10263,12 @@ export function App() {
|
|||
loadRewritePlans(result.projects),
|
||||
loadMaterializationContracts(result.projects),
|
||||
loadRewriteDiffContracts(result.projects),
|
||||
loadPatchArtifacts(result.projects),
|
||||
loadModelProviderStatuses(result.projects)
|
||||
]);
|
||||
loadPatchArtifacts(result.projects)
|
||||
]).catch(() => {
|
||||
// Project rows should remain usable even when a secondary contract endpoint is temporarily unavailable.
|
||||
});
|
||||
} catch (error: unknown) {
|
||||
setProjectsError(getErrorMessage(error, "Не удалось загрузить проекты."));
|
||||
} finally {
|
||||
setProjectsLoading(false);
|
||||
}
|
||||
}
|
||||
|
|
@ -10782,6 +10784,14 @@ export function App() {
|
|||
}
|
||||
}, [activeProjectId, projects, projectsLoading]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!activeProjectId || !isWorkPanelOpen || Object.prototype.hasOwnProperty.call(modelProviderStatuses, activeProjectId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
void loadModelProviderStatusForProject(activeProjectId);
|
||||
}, [activeProjectId, isWorkPanelOpen, modelProviderStatuses]);
|
||||
|
||||
useEffect(() => {
|
||||
folderInputRef.current?.setAttribute("webkitdirectory", "");
|
||||
folderInputRef.current?.setAttribute("directory", "");
|
||||
|
|
|
|||
Loading…
Reference in New Issue