From 2381c8d498ca57834a9a3714f9cb93763a392b32 Mon Sep 17 00:00:00 2001 From: pablodanswer Date: Fri, 22 Nov 2024 14:38:23 -0800 Subject: [PATCH] Refresh all assistants on assistant refresh (#3216) * k * k --- .../app/admin/assistants/AssistantEditor.tsx | 2 + .../components/context/AssistantsContext.tsx | 63 +++++++++++-------- 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/web/src/app/admin/assistants/AssistantEditor.tsx b/web/src/app/admin/assistants/AssistantEditor.tsx index 6fe9301a7..c3f3eb5df 100644 --- a/web/src/app/admin/assistants/AssistantEditor.tsx +++ b/web/src/app/admin/assistants/AssistantEditor.tsx @@ -412,7 +412,9 @@ export function AssistantEditor({ }); } } + await refreshAssistants(); + console.log("redirectType", redirectType); router.push( redirectType === SuccessfulPersonaUpdateRedirectType.ADMIN ? `/admin/assistants?u=${Date.now()}` diff --git a/web/src/components/context/AssistantsContext.tsx b/web/src/components/context/AssistantsContext.tsx index 4c3892402..2e40cb5bf 100644 --- a/web/src/components/context/AssistantsContext.tsx +++ b/web/src/components/context/AssistantsContext.tsx @@ -81,34 +81,36 @@ export const AssistantsProvider: React.FC<{ checkImageGenerationAvailability(); }, []); + const fetchPersonas = async () => { + if (!isAdmin && !isCurator) { + return; + } + + try { + const [editableResponse, allResponse] = await Promise.all([ + fetch("/api/admin/persona?get_editable=true"), + fetch("/api/admin/persona"), + ]); + + if (editableResponse.ok) { + const editablePersonas = await editableResponse.json(); + setEditablePersonas(editablePersonas); + } + + if (allResponse.ok) { + console.log("allResponse", allResponse); + const allPersonas = await allResponse.json(); + setAllAssistants(allPersonas); + console.log("allAssistants", allAssistants); + } else { + console.error("Error fetching personas:", allResponse); + } + } catch (error) { + console.error("Error fetching personas:", error); + } + }; + useEffect(() => { - const fetchPersonas = async () => { - if (!isAdmin && !isCurator) { - return; - } - - try { - const [editableResponse, allResponse] = await Promise.all([ - fetch("/api/admin/persona?get_editable=true"), - fetch("/api/admin/persona"), - ]); - - if (editableResponse.ok) { - const editablePersonas = await editableResponse.json(); - setEditablePersonas(editablePersonas); - } - - if (allResponse.ok) { - const allPersonas = await allResponse.json(); - setAllAssistants(allPersonas); - } else { - console.error("Error fetching personas:", allResponse); - } - } catch (error) { - console.error("Error fetching personas:", error); - } - }; - fetchPersonas(); }, [isAdmin, isCurator]); @@ -144,6 +146,7 @@ export const AssistantsProvider: React.FC<{ }); if (!response.ok) throw new Error("Failed to fetch assistants"); let assistants: Persona[] = await response.json(); + if (!hasImageCompatibleModel) { assistants = assistants.filter( (assistant) => @@ -152,15 +155,21 @@ export const AssistantsProvider: React.FC<{ ) ); } + if (!hasAnyConnectors) { assistants = assistants.filter( (assistant) => assistant.num_chunks === 0 ); } + setAssistants(assistants); + + // Fetch and update allAssistants for admins and curators + await fetchPersonas(); } catch (error) { console.error("Error refreshing assistants:", error); } + setRecentAssistants( assistants.filter( (assistant) =>