From 5c60d2887ac95e40db4aba75347e5a2abfe849f9 Mon Sep 17 00:00:00 2001 From: Faisal Amir Date: Mon, 2 Jun 2025 14:17:55 +0700 Subject: [PATCH] fix: race condition get Assistant (#5161) --- web-app/src/providers/DataProvider.tsx | 13 ++++++++++--- web-app/src/services/assistants.ts | 13 ++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/web-app/src/providers/DataProvider.tsx b/web-app/src/providers/DataProvider.tsx index 5b9abd370..b62bd440e 100644 --- a/web-app/src/providers/DataProvider.tsx +++ b/web-app/src/providers/DataProvider.tsx @@ -28,9 +28,16 @@ export function DataProvider() { getProviders().then(setProviders) }) getMCPConfig().then((data) => setServers(data.mcpServers ?? [])) - getAssistants().then((data) => - setAssistants((data as unknown as Assistant[]) ?? []) - ) + getAssistants() + .then((data) => { + // Only update assistants if we have valid data + if (data && Array.isArray(data) && data.length > 0) { + setAssistants(data as unknown as Assistant[]) + } + }) + .catch((error) => { + console.warn('Failed to load assistants, keeping default:', error) + }) migrateData() // eslint-disable-next-line react-hooks/exhaustive-deps }, []) diff --git a/web-app/src/services/assistants.ts b/web-app/src/services/assistants.ts index 6c5b7c97a..2f6414783 100644 --- a/web-app/src/services/assistants.ts +++ b/web-app/src/services/assistants.ts @@ -6,9 +6,16 @@ import { Assistant, AssistantExtension, ExtensionTypeEnum } from '@janhq/core' * @returns A promise that resolves to the assistants. */ export const getAssistants = async () => { - return ExtensionManager.getInstance() - .get(ExtensionTypeEnum.Assistant) - ?.getAssistants() + const extension = ExtensionManager.getInstance().get( + ExtensionTypeEnum.Assistant + ) + + if (!extension) { + console.warn('AssistantExtension not found') + return null + } + + return extension.getAssistants() } /**