From 910841013f46e5f97d4838aaf6bd0d73ad091601 Mon Sep 17 00:00:00 2001 From: Medcl Date: Mon, 10 Mar 2025 12:08:39 +0800 Subject: [PATCH] fix: fusion search should excluded disabled servers (#271) --- docs/content.en/docs/release-notes/_index.md | 1 + src-tauri/src/lib.rs | 6 +----- src-tauri/src/server/auth.rs | 13 +++++------- src-tauri/src/server/servers.rs | 21 ++++++++++++++------ 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/docs/content.en/docs/release-notes/_index.md b/docs/content.en/docs/release-notes/_index.md index 0a914ed1..40ce33f2 100644 --- a/docs/content.en/docs/release-notes/_index.md +++ b/docs/content.en/docs/release-notes/_index.md @@ -14,6 +14,7 @@ Information about release notes of Coco Server is provided here. ### Breaking changes ### Bug fix +- Fix the issue that the fusion search include disabled servers ### Improvements diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 2305afcb..1d8bd7a9 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -11,12 +11,9 @@ mod util; use crate::common::register::SearchSourceRegistry; // use crate::common::traits::SearchSource; use crate::common::{MAIN_WINDOW_LABEL, SETTINGS_WINDOW_LABEL}; -use crate::server::search::CocoSearchSource; use crate::server::servers::{load_or_insert_default_server, load_servers_token}; use autostart::{change_autostart, enable_autostart}; use lazy_static::lazy_static; -use reqwest::Client; -use std::path::PathBuf; use std::sync::Mutex; #[cfg(target_os = "macos")] use tauri::ActivationPolicy; @@ -226,8 +223,7 @@ pub async fn init(app_handle: &AppHandle) { let registry: State = app_handle.state::(); for server in coco_servers { - let source = CocoSearchSource::new(server.clone(), Client::new()); - registry.register_source(source).await; + crate::server::servers::try_register_server_to_search_source(app_handle.clone(), &server).await; } } diff --git a/src-tauri/src/server/auth.rs b/src-tauri/src/server/auth.rs index a3d85886..53c80365 100644 --- a/src-tauri/src/server/auth.rs +++ b/src-tauri/src/server/auth.rs @@ -1,13 +1,11 @@ use crate::common::auth::RequestAccessTokenResponse; -use crate::common::register::SearchSourceRegistry; use crate::common::server::ServerAccessToken; use crate::server::http_client::HttpClient; use crate::server::profile::get_user_profiles; -use crate::server::search::CocoSearchSource; -use crate::server::servers::{get_server_by_id, persist_servers, persist_servers_token, save_access_token, save_server}; -use reqwest::{Client, StatusCode}; +use crate::server::servers::{get_server_by_id, persist_servers, persist_servers_token, save_access_token, save_server, try_register_server_to_search_source}; +use reqwest::StatusCode; use std::collections::HashMap; -use tauri::{AppHandle, Manager, Runtime}; +use tauri::{AppHandle, Runtime}; fn request_access_token_url(request_id: &str) -> String { // Remove the endpoint part and keep just the path for the request format!("/auth/request_access_token?request_id={}", request_id) @@ -54,9 +52,8 @@ pub async fn handle_sso_callback( save_access_token(server_id.clone(), access_token); persist_servers_token(&app_handle)?; - let registry = app_handle.state::(); - let source = CocoSearchSource::new(server.clone(), Client::new()); - registry.register_source(source).await; + // Register the server to the search source + try_register_server_to_search_source(app_handle.clone(), &server).await; // Update the server's profile using the util::http::HttpClient::get method let profile = get_user_profiles(app_handle.clone(), server_id.clone()).await; diff --git a/src-tauri/src/server/servers.rs b/src-tauri/src/server/servers.rs index 66ad7234..e0eace87 100644 --- a/src-tauri/src/server/servers.rs +++ b/src-tauri/src/server/servers.rs @@ -407,9 +407,8 @@ pub async fn add_coco_server( // Save the new server to the cache save_server(&server); - let registry = app_handle.state::(); - let source = CocoSearchSource::new(server.clone(), Client::new()); - registry.register_source(source).await; + // Register the server to the search source + try_register_server_to_search_source(app_handle.clone(), &server).await; // Persist the servers to the store persist_servers(&app_handle) @@ -459,9 +458,8 @@ pub async fn enable_server(app_handle: AppHandle, id: String) -> server.enabled = true; save_server(&server); - let registry = app_handle.state::(); - let source = CocoSearchSource::new(server.clone(), Client::new()); - registry.register_source(source).await; + // Register the server to the search source + try_register_server_to_search_source(app_handle.clone(), &server).await; persist_servers(&app_handle) .await @@ -470,6 +468,17 @@ pub async fn enable_server(app_handle: AppHandle, id: String) -> Ok(()) } +pub async fn try_register_server_to_search_source( + app_handle: AppHandle, + server: &Server, +) { + if server.enabled { + let registry = app_handle.state::(); + let source = CocoSearchSource::new(server.clone(), Client::new()); + registry.register_source(source).await; + } +} + pub async fn mark_server_as_offline(id: &str) { // println!("server_is_offline: {}", id);