From 9fd56457d82fc5e9bcadd0ebf7022a54a19eb4cf Mon Sep 17 00:00:00 2001 From: Medcl Date: Fri, 28 Feb 2025 11:48:25 +0800 Subject: [PATCH] chore: refresh all server's info on purpose, get the actual health info (#225) * chore: refresh all server's info * chore: update release notes --- docs/content.en/docs/release-notes/_index.md | 2 ++ src-tauri/src/server/servers.rs | 26 ++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/docs/content.en/docs/release-notes/_index.md b/docs/content.en/docs/release-notes/_index.md index 91a25c56..d9d58dcb 100644 --- a/docs/content.en/docs/release-notes/_index.md +++ b/docs/content.en/docs/release-notes/_index.md @@ -30,6 +30,8 @@ Information about release notes of Coco Server is provided here. - Refactoring assistant api #195 - Refactor: remove websocket_session_id from message request #206 - Refactor: the display of search results and the logic of creating new chats #207 +- Refresh all server's info on purpose, get the actual health info #225 + ## 0.1.0 (2015-02-16) diff --git a/src-tauri/src/server/servers.rs b/src-tauri/src/server/servers.rs index 4094c7de..1ae85315 100644 --- a/src-tauri/src/server/servers.rs +++ b/src-tauri/src/server/servers.rs @@ -259,6 +259,10 @@ pub async fn load_or_insert_default_server( pub async fn list_coco_servers( _app_handle: AppHandle, ) -> Result, String> { + + //hard fresh all server's info, in order to get the actual health + refresh_all_coco_server_info(_app_handle.clone()).await; + let servers: Vec = get_all_servers(); Ok(servers) } @@ -278,6 +282,15 @@ pub const COCO_SERVERS: &str = "coco_servers"; const COCO_SERVER_TOKENS: &str = "coco_server_tokens"; +pub async fn refresh_all_coco_server_info( + app_handle: AppHandle, +) { + let servers = get_all_servers(); + for server in servers { + let _ = refresh_coco_server_info(app_handle.clone(), server.id.clone()).await; + } +} + #[tauri::command] pub async fn refresh_coco_server_info( app_handle: AppHandle, @@ -328,9 +341,11 @@ pub async fn refresh_coco_server_info( Err("Received empty response body.".to_string()) } } else { + mark_server_as_offline(id.as_str()).await; Err("Could not determine the content length.".to_string()) } } else { + mark_server_as_offline(id.as_str()).await; Err(format!("Request failed with status: {}", response.status())) } } else { @@ -453,6 +468,17 @@ pub async fn enable_server(app_handle: AppHandle, id: String) -> Ok(()) } + +pub async fn mark_server_as_offline(id: &str) { + // println!("server_is_offline: {}", id); + let server = get_server_by_id(id); + if let Some(mut server) = server { + server.available = false; + server.health = None; + save_server(&server); + } +} + #[tauri::command] pub async fn disable_server(app_handle: AppHandle, id: String) -> Result<(), ()> { println!("disable_server: {}", id);