tauri_plugin_app_control/
lib.rs1use tauri::plugin::{Builder, TauriPlugin};
2use tauri::{Manager, Runtime};
3
4pub use models::*;
5
6#[cfg(desktop)]
7mod desktop;
8#[cfg(mobile)]
9mod mobile;
10
11mod error;
12mod models;
13mod commands;
14
15pub use error::{Error, Result}; #[cfg(desktop)]
18use desktop::AppControl;
19#[cfg(mobile)]
20use mobile::AppControl; pub trait AppControlExt<R: Runtime> {
24 fn app_control(&self) -> &AppControl<R>;
25}
26
27impl<R: Runtime, T: Manager<R>> crate::AppControlExt<R> for T {
28 fn app_control(&self) -> &AppControl<R> {
29 self.state::<AppControl<R>>().inner()
30 }
31}
32
33pub fn init<R: Runtime>() -> TauriPlugin<R> {
35 Builder::new("app-control")
36 .invoke_handler(tauri::generate_handler![
37 commands::minimize_app,
38 commands::close_app,
39 commands::exit_app,
40 commands::is_app_in_foreground
41 ])
42 .setup(|app, api| {
43 #[cfg(mobile)]
44 {
45 let app_control_instance = mobile::init(app, api)?;
47 app.manage(app_control_instance);
48 }
49 #[cfg(desktop)]
50 {
51 let app_control_instance = desktop::init(app, api)?;
54 app.manage(app_control_instance);
55 }
56 Ok(())
57 })
58 .build()
59}