use crate::api;
use serde_json::{json, Value};
use tauri::{
plugin::{Builder, TauriPlugin},
Emitter, Runtime,
};
#[tauri::command]
fn theme_get() -> Value {
let (scheme, ui) = api::theme_get();
json!({ "scheme": scheme, "ui": ui })
}
#[tauri::command]
fn theme_set(scheme: Option<String>, ui: Option<Value>) {
if let Some(s) = scheme {
api::theme_set_scheme(&s);
}
if let Some(u) = ui {
api::theme_set_ui(&u);
}
}
pub fn init<R: Runtime>() -> TauriPlugin<R> {
Builder::new("zwire-theme")
.invoke_handler(tauri::generate_handler![theme_get, theme_set])
.setup(|app, _api| {
let handle = app.clone();
api::theme_watch(move |scheme, ui| {
let _ = handle.emit("theme-changed", json!({ "scheme": scheme, "ui": ui }));
});
Ok(())
})
.build()
}