11use anyhow:: Result ;
22use rand:: { Rng , distributions:: Alphanumeric } ;
3- use tauri:: { AppHandle , Emitter , Manager , State } ;
4- use tracing:: { debug , info} ;
3+ use tauri:: { AppHandle , State } ;
4+ use tracing:: info;
55
66use crate :: {
7- DatabaseManager , check_launch_then_exit ,
7+ DatabaseManager ,
88 db:: {
99 launcher,
1010 launcher_resource:: { self , LauncherResource } ,
1111 } ,
1212 error:: OneClickLaunchError ,
1313 events:: {
14- payloads:: { LauncherLaunched , LauncherLaunchedPayload } ,
15- types:: { EventDispatcher , EventSystem } ,
14+ EventDispatcher ,
15+ types:: {
16+ LauncherBasicInfoUpdated , LauncherBasicInfoUpdatedPayload , LauncherLaunched ,
17+ LauncherLaunchedPayload ,
18+ } ,
1619 } ,
1720 open_using_default_program,
1821} ;
1922
20- pub const LAUNCHER_LAUNCHED_EVENT : & str = "launcher_launched" ;
21- pub const LAUNCHER_BASIC_INFO_UPDATED_EVENT : & str = "launcher_basic_info_updated" ;
22-
2323/// 创建新的启动器
2424#[ tauri:: command]
2525pub async fn craete_launcher (
@@ -29,7 +29,14 @@ pub async fn craete_launcher(
2929) -> Result < i64 , OneClickLaunchError > {
3030 let name = name. unwrap_or_else ( generate_default_launcher_name) ;
3131 let launcher_id = launcher:: create ( & db. pool , & name, None ) . await ?;
32- let _ = app. emit ( LAUNCHER_BASIC_INFO_UPDATED_EVENT , "" ) ;
32+
33+ let _ = EventDispatcher :: < LauncherBasicInfoUpdated > :: send_event (
34+ & app,
35+ LauncherBasicInfoUpdatedPayload {
36+ launcher_ids : vec ! [ launcher_id] ,
37+ } ,
38+ ) ;
39+
3340 Ok ( launcher_id)
3441}
3542
@@ -57,7 +64,14 @@ pub async fn modify_launcher_name(
5764 name : String ,
5865) -> Result < ( ) , OneClickLaunchError > {
5966 launcher:: modify_launcher_name ( & db. pool , launcher_id, & name) . await ?;
60- let _ = app. emit ( LAUNCHER_BASIC_INFO_UPDATED_EVENT , "" ) ;
67+
68+ let _ = EventDispatcher :: < LauncherBasicInfoUpdated > :: send_event (
69+ & app,
70+ LauncherBasicInfoUpdatedPayload {
71+ launcher_ids : vec ! [ launcher_id] ,
72+ } ,
73+ ) ;
74+
6175 Ok ( ( ) )
6276}
6377
@@ -86,7 +100,12 @@ pub async fn copy_launcher(
86100
87101 tx. commit ( ) . await ?;
88102
89- let _ = app. emit ( LAUNCHER_BASIC_INFO_UPDATED_EVENT , "" ) ;
103+ let _ = EventDispatcher :: < LauncherBasicInfoUpdated > :: send_event (
104+ & app,
105+ LauncherBasicInfoUpdatedPayload {
106+ launcher_ids : vec ! [ launcher_id] ,
107+ } ,
108+ ) ;
90109
91110 Ok ( new_launcher_id)
92111}
@@ -154,7 +173,12 @@ pub async fn delete_launcher(
154173
155174 tx. commit ( ) . await ?;
156175
157- let _ = app. emit ( LAUNCHER_BASIC_INFO_UPDATED_EVENT , "" ) ;
176+ let _ = EventDispatcher :: < LauncherBasicInfoUpdated > :: send_event (
177+ & app,
178+ LauncherBasicInfoUpdatedPayload {
179+ launcher_ids : vec ! [ launcher_id] ,
180+ } ,
181+ ) ;
158182
159183 Ok ( ( ) )
160184}
@@ -180,7 +204,12 @@ pub async fn modify_launcher_sort(
180204
181205 tx. commit ( ) . await ?;
182206
183- let _ = app. emit ( LAUNCHER_BASIC_INFO_UPDATED_EVENT , "" ) ;
207+ let _ = EventDispatcher :: < LauncherBasicInfoUpdated > :: send_event (
208+ & app,
209+ LauncherBasicInfoUpdatedPayload {
210+ launcher_ids : launchers. iter ( ) . map ( |e| e. id ) . collect ( ) ,
211+ } ,
212+ ) ;
184213
185214 Ok ( ( ) )
186215}
@@ -241,19 +270,19 @@ pub async fn launch(
241270) -> Result < ( ) , OneClickLaunchError > {
242271 let resources = launcher_resource:: query_by_launcher_id ( & db. pool , launcher_id) . await ?;
243272
244- launch_launcher_resources ( & app, & resources) ;
273+ launch_resources ( & app, & resources) ;
245274
246- // app.emit (
247- // LAUNCHER_LAUNCHED_EVENT ,
248- // LauncherLaunchedPayload { launcher_id },
249- // )?;
250-
251- EventDispatcher :: < LauncherLaunched > :: send_event ( & app , LauncherLaunchedPayload { launcher_id } ) ?;
275+ EventDispatcher :: < LauncherLaunched > :: send_event (
276+ & app ,
277+ LauncherLaunchedPayload {
278+ launcher_ids : vec ! [ launcher_id ] ,
279+ } ,
280+ ) ?;
252281
253282 Ok ( ( ) )
254283}
255284
256- pub fn launch_launcher_resources ( app : & AppHandle , resources : & [ LauncherResource ] ) {
285+ pub fn launch_resources ( app : & AppHandle , resources : & [ LauncherResource ] ) {
257286 for resource in resources. iter ( ) {
258287 if let Err ( e) = open_using_default_program ( app, resource. path . as_str ( ) ) {
259288 info ! (
@@ -263,30 +292,3 @@ pub fn launch_launcher_resources(app: &AppHandle, resources: &[LauncherResource]
263292 }
264293 }
265294}
266-
267- pub fn de ( app : AppHandle ) {
268- // 监听 `event-name`(无论其在什么窗口中触发)
269- let app_handle = app; // 获取 AppHandle
270-
271- EventSystem :: register_listener ( & app_handle. clone ( ) , LauncherLaunched , move |_payload| {
272- let inner_app_handle = app_handle. clone ( ) ;
273- tauri:: async_runtime:: spawn ( async move {
274- let db = inner_app_handle. state :: < DatabaseManager > ( ) ;
275- if let Ok ( _exit @ true ) = check_launch_then_exit ( & db. pool ) . await {
276- debug ! ( "监听到启动器启动完成事件, 已设置启动后退出, 正在退出程序." ) ;
277- inner_app_handle. exit ( 0 ) ;
278- }
279- } ) ;
280- } ) ;
281-
282- // let _id = app.listen(launcher_api::LAUNCHER_LAUNCHED_EVENT, move |_event| {
283- // let inner_app_handle = app_handle.clone();
284- // tauri::async_runtime::spawn(async move {
285- // let db = inner_app_handle.state::<DatabaseManager>();
286- // if let Ok(_exit @ true) = check_launch_then_exit(&db.pool).await {
287- // debug!("监听到启动器启动完成事件, 已设置启动后退出, 正在退出程序.");
288- // inner_app_handle.exit(0);
289- // }
290- // });
291- // });
292- }
0 commit comments