retrom_plugin_config/
lib.rs

1use config_manager::ConfigManager;
2use tauri::{
3    plugin::{Builder, TauriPlugin},
4    Manager, Runtime,
5};
6
7mod commands;
8mod config_manager;
9mod error;
10
11pub use error::{Error, Result};
12
13/// Extensions to [`tauri::App`], [`tauri::AppHandle`] and [`tauri::Window`] to access the config APIs.
14pub trait ConfigExt<R: Runtime> {
15    fn config_manager(&self) -> &ConfigManager<R>;
16}
17
18impl<R: Runtime, T: Manager<R>> crate::ConfigExt<R> for T {
19    fn config_manager(&self) -> &ConfigManager<R> {
20        self.state::<ConfigManager<R>>().inner()
21    }
22}
23
24/// Initializes the plugin.
25pub fn init<R: Runtime>() -> TauriPlugin<R> {
26    Builder::new("config")
27        .invoke_handler(tauri::generate_handler![
28            commands::get_config,
29            commands::set_config,
30            commands::is_flatpak
31        ])
32        .setup(|app, api| {
33            let config_manager = config_manager::init(app, api)?;
34            app.manage(config_manager);
35            Ok(())
36        })
37        .build()
38}