diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 6233081b..6c3af00e 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -135,7 +135,8 @@ pub fn run() { server::transcription::transcription, local::application::get_default_search_paths, local::application::list_app_with_metadata_in, - util::open + util::open, + server::system_settings::get_system_settings ]) .setup(|app| { let registry = SearchSourceRegistry::default(); diff --git a/src-tauri/src/server/mod.rs b/src-tauri/src/server/mod.rs index 00d25808..41620ac7 100644 --- a/src-tauri/src/server/mod.rs +++ b/src-tauri/src/server/mod.rs @@ -8,5 +8,6 @@ pub mod http_client; pub mod profile; pub mod search; pub mod servers; +pub mod system_settings; pub mod transcription; pub mod websocket; diff --git a/src-tauri/src/server/system_settings.rs b/src-tauri/src/server/system_settings.rs new file mode 100644 index 00000000..87c66174 --- /dev/null +++ b/src-tauri/src/server/system_settings.rs @@ -0,0 +1,15 @@ +use crate::server::http_client::HttpClient; +use serde_json::Value; +use tauri::command; + +#[command] +pub async fn get_system_settings(server_id: String) -> Result { + let response = HttpClient::get(&server_id, "/settings", None) + .await + .map_err(|err| err.to_string())?; + + response + .json::() + .await + .map_err(|err| err.to_string()) +} diff --git a/src/api/axiosRequest.ts b/src/api/axiosRequest.ts index 2865c20d..049e8600 100644 --- a/src/api/axiosRequest.ts +++ b/src/api/axiosRequest.ts @@ -1,6 +1,6 @@ import axios from "axios"; -import { useAppStore } from '@/stores/appStore'; +import { useAppStore } from "@/stores/appStore"; import { handleChangeRequestHeader, @@ -44,21 +44,22 @@ axios.interceptors.response.use( export const handleApiError = (error: any) => { const addError = useAppStore.getState().addError; - - let message = 'Request failed'; - + + let message = "Request failed"; + if (error.response) { // Server error response - message = error.response.data?.message || `Error (${error.response.status})`; + message = + error.response.data?.message || `Error (${error.response.status})`; } else if (error.request) { // Request failed to send - message = 'Network connection failed'; + message = "Network connection failed"; } else { // Other errors message = error.message; } - - addError(message, 'error'); + + addError(message, "error"); return error; }; diff --git a/src/components/Assistant/AssistantList.tsx b/src/components/Assistant/AssistantList.tsx index 550f6325..c6210e3d 100644 --- a/src/components/Assistant/AssistantList.tsx +++ b/src/components/Assistant/AssistantList.tsx @@ -22,6 +22,8 @@ export function AssistantList({ assistantIDs = [] }: AssistantListProps) { const { t } = useTranslation(); const { connected } = useChatStore(); const isTauri = useAppStore((state) => state.isTauri); + const assistantList = useConnectStore((state) => state.assistantList); + const setAssistantList = useConnectStore((state) => state.setAssistantList); const currentService = useConnectStore((state) => state.currentService); const currentAssistant = useConnectStore((state) => state.currentAssistant); const setCurrentAssistant = useConnectStore( @@ -34,7 +36,6 @@ export function AssistantList({ assistantIDs = [] }: AssistantListProps) { const menuRef = useRef(null); useClickAway(menuRef, () => setIsOpen(false)); - const [assistants, setAssistants] = useState([]); const fetchAssistant = useCallback(async (serverId?: string) => { let response: any; @@ -46,14 +47,14 @@ export function AssistantList({ assistantIDs = [] }: AssistantListProps) { }); response = response ? JSON.parse(response) : null; } catch (err) { - setAssistants([]); + setAssistantList([]); setCurrentAssistant(null); console.error("assistant_search", err); } } else { const [error, res] = await Get(`/assistant/_search`); if (error) { - setAssistants([]); + setAssistantList([]); setCurrentAssistant(null); console.error("assistant_search", error); return; @@ -64,11 +65,12 @@ export function AssistantList({ assistantIDs = [] }: AssistantListProps) { console.log("assistant_search", response); let assistantList = response?.hits?.hits || []; - assistantList = assistantIDs.length > 0 - ? assistantList.filter((item: any) => assistantIDs.includes(item._id)) - : assistantList; + assistantList = + assistantIDs.length > 0 + ? assistantList.filter((item: any) => assistantIDs.includes(item._id)) + : assistantList; - setAssistants(assistantList); + setAssistantList(assistantList); if (assistantList.length > 0) { const assistant = assistantList.find( (item: any) => item._id === currentAssistant?._id @@ -150,7 +152,7 @@ export function AssistantList({ assistantIDs = [] }: AssistantListProps) { - {assistants.map((assistant) => ( + {assistantList.map((assistant) => (