From 9d3946e2ed12e7d92012fad8ee306cc64ef96fe5 Mon Sep 17 00:00:00 2001 From: Rebecca Alpert Date: Fri, 13 Dec 2024 10:08:39 -0500 Subject: [PATCH] Update dropdown menus when new assistant is created --- src/app/BaseChatbot/BaseChatbot.tsx | 22 ++++++++-------------- src/app/Compare/CompareLayout.tsx | 17 ++++++++++------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/app/BaseChatbot/BaseChatbot.tsx b/src/app/BaseChatbot/BaseChatbot.tsx index a47e11c..ed5be62 100644 --- a/src/app/BaseChatbot/BaseChatbot.tsx +++ b/src/app/BaseChatbot/BaseChatbot.tsx @@ -29,12 +29,7 @@ import { useAppData } from '@app/AppData/AppDataContext'; const BaseChatbot: React.FunctionComponent = () => { const { chatbots } = useLoaderData() as { chatbots: CannedChatbot[] }; - const { - flyoutMenuSelectedChatbot, - updateFlyoutMenuSelectedChatbot, - chatbots: appDataChatbots, - setChatbots, - } = useAppData(); + const { flyoutMenuSelectedChatbot, updateFlyoutMenuSelectedChatbot, chatbots: appDataChatbots } = useAppData(); const [isSendButtonDisabled, setIsSendButtonDisabled] = React.useState(true); const [messages, setMessages] = React.useState([]); const [currentMessage, setCurrentMessage] = React.useState([]); @@ -48,17 +43,16 @@ const BaseChatbot: React.FunctionComponent = () => { const [hasStopButton, setHasStopButton] = React.useState(false); const [files, setFiles] = React.useState([]); const [isLoadingFile, setIsLoadingFile] = React.useState(false); + const [allChatbots, setAllChatbots] = React.useState(chatbots); React.useEffect(() => { document.title = `Red Hat Composer AI Studio | ${currentChatbot?.name}`; }, []); React.useEffect(() => { - setChatbots(chatbots); - }, [chatbots]); - - React.useEffect(() => { - setChatbots(appDataChatbots); + if (appDataChatbots.length > 0) { + setAllChatbots(appDataChatbots); + } }, [appDataChatbots]); React.useEffect(() => { @@ -370,10 +364,10 @@ const BaseChatbot: React.FunctionComponent = () => { - + - {chatbots.length >= 2 && ( - )} diff --git a/src/app/Compare/CompareLayout.tsx b/src/app/Compare/CompareLayout.tsx index 531763e..bc824a5 100644 --- a/src/app/Compare/CompareLayout.tsx +++ b/src/app/Compare/CompareLayout.tsx @@ -13,7 +13,7 @@ import { useAppData } from '@app/AppData/AppDataContext'; export const CompareLayout: React.FunctionComponent = () => { // information from api - const { chatbots } = useLoaderData() as { chatbots: CannedChatbot[] }; + const { chatbots: initialChatbots } = useLoaderData() as { chatbots: CannedChatbot[] }; // state const [isSendButtonDisabled, setIsSendButtonDisabled] = React.useState(true); @@ -30,6 +30,7 @@ export const CompareLayout: React.FunctionComponent = () => { const [files, setFiles] = React.useState([]); const [isLoadingFile, setIsLoadingFile] = React.useState(false); const [error, setError] = React.useState(); + const [allChatbots, setAllChatbots] = React.useState(initialChatbots); // constants for search params const [searchParams, setSearchParams] = useSearchParams(); @@ -40,16 +41,18 @@ export const CompareLayout: React.FunctionComponent = () => { const { status } = useChildStatus(); // context, used for panels - const { setChatbots } = useAppData(); + const { chatbots: appDataChatbots } = useAppData(); React.useEffect(() => { - setChatbots(chatbots); - }, [chatbots]); + if (appDataChatbots.length > 0) { + setAllChatbots(appDataChatbots); + } + }, [appDataChatbots]); React.useEffect(() => { document.title = `Red Hat Composer AI Studio | Compare`; if (assistants && assistants.length === 2) { - const actualChatbots = chatbots.filter( + const actualChatbots = allChatbots.filter( (chatbot) => chatbot.name === assistants[0] || chatbot.name === assistants[1], ); if (actualChatbots.length === 2) { @@ -229,7 +232,7 @@ export const CompareLayout: React.FunctionComponent = () => {
{