From e66b8e7894822cba18183a0d604b3ad10ca6790e Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Sat, 15 Nov 2025 21:18:35 +0800 Subject: [PATCH] feat(timer): better subscription update timer after core startup --- src-tauri/src/core/timer.rs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/core/timer.rs b/src-tauri/src/core/timer.rs index 20c0bb6c0..08ee68395 100644 --- a/src-tauri/src/core/timer.rs +++ b/src-tauri/src/core/timer.rs @@ -1,5 +1,7 @@ use crate::{ - config::Config, core::sysopt::Sysopt, feat, logging, logging_error, singleton, + config::Config, + core::{CoreManager, manager::RunningMode, sysopt::Sysopt}, + feat, logging, logging_error, singleton, utils::logging::Type, }; use anyhow::{Context as _, Result}; @@ -392,6 +394,7 @@ impl Timer { .spawn_async_routine(move || { let uid = uid.clone(); Box::pin(async move { + Self::wait_untile_core_manager(Duration::from_millis(1000)).await; Self::wait_until_sysopt(Duration::from_millis(1000)).await; Self::async_task(&uid).await; }) as Pin + Send>> @@ -523,10 +526,28 @@ impl Timer { Self::emit_update_event(uid, false); } + async fn wait_untile_core_manager(max_wait: Duration) { + let _ = timeout(max_wait, async { + while *CoreManager::global().get_running_mode() != RunningMode::NotRunning { + logging!( + debug, + Type::Timer, + "Waiting for CoreManager to be initialized..." + ); + sleep(Duration::from_millis(30)).await; + } + }) + .await; + } + async fn wait_until_sysopt(max_wait: Duration) { let _ = timeout(max_wait, async { while !Sysopt::global().is_initialed() { - logging!(warn, Type::Timer, "Waiting for Sysopt to be initialized..."); + logging!( + debug, + Type::Timer, + "Waiting for Sysopt to be initialized..." + ); sleep(Duration::from_millis(30)).await; } })