Skip to main content

tauri_plugin_configurate/
lib.rs

1use tauri::{
2    plugin::{Builder, TauriPlugin},
3    Manager, Runtime,
4};
5
6pub use models::*;
7
8#[cfg(desktop)]
9mod desktop;
10#[cfg(mobile)]
11mod mobile;
12
13mod commands;
14mod dotpath;
15mod error;
16mod keyring_store;
17mod models;
18mod storage;
19
20pub use error::{Error, Result};
21
22#[cfg(desktop)]
23use desktop::Configurate;
24#[cfg(mobile)]
25use mobile::Configurate;
26
27/// Extensions to [`tauri::App`], [`tauri::AppHandle`] and [`tauri::Window`]
28/// to access the configurate APIs.
29pub trait ConfigurateExt<R: Runtime> {
30    fn configurate(&self) -> &Configurate<R>;
31}
32
33impl<R: Runtime, T: Manager<R>> crate::ConfigurateExt<R> for T {
34    fn configurate(&self) -> &Configurate<R> {
35        self.state::<Configurate<R>>().inner()
36    }
37}
38
39/// Initializes the plugin.
40pub fn init<R: Runtime>() -> TauriPlugin<R> {
41    Builder::new("configurate")
42        .invoke_handler(tauri::generate_handler![
43            commands::create,
44            commands::load,
45            commands::save,
46            commands::delete,
47            commands::load_all,
48            commands::save_all,
49            commands::unlock,
50        ])
51        .setup(|app, api| {
52            #[cfg(mobile)]
53            let configurate = mobile::init(app, api)?;
54            #[cfg(desktop)]
55            let configurate = desktop::init(app, api)?;
56            app.manage(configurate);
57            Ok(())
58        })
59        .build()
60}