diff --git a/web/src/components/assistants.jsx b/web/src/components/assistants.jsx index 0eae676..96197cb 100644 --- a/web/src/components/assistants.jsx +++ b/web/src/components/assistants.jsx @@ -9,6 +9,7 @@ import { LoadingOverlay, Modal, NativeSelect, + NavLink, Stack, Text, Textarea, @@ -190,9 +191,11 @@ export default function Assistants() { diff --git a/web/src/components/header.jsx b/web/src/components/header.jsx index 588a464..20556b5 100644 --- a/web/src/components/header.jsx +++ b/web/src/components/header.jsx @@ -55,57 +55,126 @@ export default function Header({ opened, toggle, showNavBurger }) { } }, [checkLogin.isFetching]); + const navHome = () => { + return ( + + ); + }; + + const navAssistants = () => { + return ( + + ); + }; + + const loginButton = () => { + if (isLogin) { + return ( + + ); + } + return ( + + ); + }; + + const themeToggleButton = () => { + return ( + + ); + }; + return ( <> - + {showNavBurger && ( )} - - - - - - - - - - Vibrain - {isLogin && ( - } - onClick={() => { - // setIsLogin(false); - Cookie.remove("token"); - window.location.href = "/"; - }} - > - Logout - - )} - - + {!showNavBurger &&
} + + {navHome()} + {navAssistants()} + {themeToggleButton()} + {loginButton()} + + + + + + Vibrain + {navHome()} + {navAssistants()} + {themeToggleButton()} + {loginButton()} + +
); diff --git a/web/src/components/thread.jsx b/web/src/components/thread.jsx index b5bc28c..af6f294 100644 --- a/web/src/components/thread.jsx +++ b/web/src/components/thread.jsx @@ -9,6 +9,7 @@ import { Group, Menu, Modal, + NativeSelect, Paper, ScrollArea, Slider, @@ -61,6 +62,33 @@ export default function ChatWindowsComponent() { enabled: isLogin && !!threadId && !!assistantId, }); + const getThread = useQuery({ + queryKey: ["get-thread", threadId], + queryFn: async () => { + const res = await get( + `/api/v1/assistants/${assistantId}/threads/${threadId}`, + ); + return res.data || {}; + }, + enabled: isLogin && !!threadId && !!assistantId, + onSuccess: (data) => { + settingsForm.setValues(data); + }, + }); + // set page title + useEffect(() => { + document.title = `Chat with ${getThread.data?.name || "Assistant"}`; + }, [getThread.data]); + + const listModels = useQuery({ + queryKey: ["list-assistants-models"], + queryFn: async () => { + const res = await get("/api/v1/assistants/models"); + return res.data || []; + }, + enabled: isLogin, + }); + useEffect(() => { if (listMessages.data) { setMessageList(listMessages.data); @@ -292,6 +320,15 @@ export default function ChatWindowsComponent() { labelAlwaysOn /> + { + settingsForm.setFieldValue("model", e.target.value); + }} + data={listModels.data} + />