@@ -3,8 +3,14 @@ use tracing::{debug, error};
33
44use crate :: {
55 DatabaseManager ,
6- api:: { launcher_api, setting_api:: check_launch_then_exit, window_api} ,
7- constants:: { AUTO_START_FLAG , THEME_KEY } ,
6+ api:: {
7+ launcher_api,
8+ setting_api:: { self , check_launch_then_exit} ,
9+ window_api,
10+ } ,
11+ constants:: {
12+ self , AUTO_START_FLAG , AUTO_START_LAUNCHER_IDS_KEY , HIDE_AFTER_AUTO_START_KEY , THEME_KEY ,
13+ } ,
814 db:: { launcher_resource, settings} ,
915 events:: EventDispatcher ,
1016} ;
@@ -50,6 +56,7 @@ fn register_application_startup_complete_listeners(app: &AppHandle) {
5056 let app_cloned = app. clone ( ) ;
5157 EventSystem :: register_listener ( app, ApplicationStartupComplete , move |payload| {
5258 debug ! ( "application_startup_complete_listeners 处理中" ) ;
59+ hide_after_auto_start ( & app_cloned, & payload) ;
5360 refresh_tray ( & app_cloned) ;
5461 launch_auto_start_launchers ( & app_cloned, & payload) ;
5562 debug ! ( "application_startup_complete_listeners 处理完成" ) ;
@@ -78,7 +85,46 @@ fn refresh_tray(app: &AppHandle) {
7885 } ) ;
7986}
8087
81- /// 注册应用程序启动完成监听器: 启动自启动启动器
88+ /// 应用程序自动启动后隐藏
89+ fn hide_after_auto_start ( app : & AppHandle , payload : & ApplicationStartupCompletePayload ) {
90+ if payload. args . contains ( & AUTO_START_FLAG ) {
91+ debug ! (
92+ "hide_after_auto_start 判断为自动启动, 命令行参数: {:?}" ,
93+ payload. args
94+ ) ;
95+
96+ let inner_app = app. clone ( ) ;
97+
98+ tauri:: async_runtime:: spawn ( async move {
99+ let app_cloned = inner_app. clone ( ) ;
100+
101+ let db_manager = app_cloned. state :: < DatabaseManager > ( ) ;
102+
103+ let window = app_cloned
104+ . get_webview_window ( constants:: MAIN_WINDOW_LABEL )
105+ . unwrap ( ) ;
106+
107+ match settings:: read ( & db_manager. pool , HIDE_AFTER_AUTO_START_KEY )
108+ . await
109+ . ok ( )
110+ . flatten ( )
111+ {
112+ Some ( settings) if setting_api:: string_to_bool ( & settings. value ) => {
113+ let _ = window. hide ( ) ;
114+ }
115+ _ => {
116+ let _ = window. show ( ) ;
117+ }
118+ }
119+ } ) ;
120+ } else {
121+ let window = app
122+ . get_webview_window ( constants:: MAIN_WINDOW_LABEL )
123+ . unwrap ( ) ;
124+ let _ = window. show ( ) ;
125+ }
126+ }
127+
82128fn launch_auto_start_launchers ( app : & AppHandle , payload : & ApplicationStartupCompletePayload ) {
83129 // 检查启动参数, 当命令包含`--auto`时表示是操作系统触发的自动启动
84130 if payload. args . contains ( & AUTO_START_FLAG ) {
@@ -95,7 +141,7 @@ fn launch_auto_start_launchers(app: &AppHandle, payload: &ApplicationStartupComp
95141 let db_manager = app_cloned. state :: < DatabaseManager > ( ) ;
96142
97143 if let Ok ( Some ( settings) ) =
98- settings:: read ( & db_manager. pool , "auto_start_launcher_ids" ) . await
144+ settings:: read ( & db_manager. pool , AUTO_START_LAUNCHER_IDS_KEY ) . await
99145 {
100146 if let Ok ( auto_start_launcher_ids) =
101147 serde_json:: from_str :: < Vec < i64 > > ( & settings. value )
0 commit comments