refactor(store-example): replace load_from_store with TryFrom impl in example (#3277)

This commit is contained in:
Thibault Tisserand
2026-02-19 00:22:25 +01:00
committed by GitHub
parent 2971289252
commit 2574ec89e7
2 changed files with 16 additions and 24 deletions
@@ -10,10 +10,8 @@ pub struct AppSettings {
pub theme: String,
}
impl AppSettings {
pub fn load_from_store<R: tauri::Runtime>(
store: &Store<R>,
) -> Result<Self, Box<dyn std::error::Error>> {
impl<R: tauri::Runtime> From<&Store<R>> for AppSettings {
fn from(store: &Store<R>) -> Self {
let launch_at_login = store
.get("appSettings.launchAtLogin")
.and_then(|v| v.as_bool())
@@ -24,9 +22,9 @@ impl AppSettings {
.and_then(|v| v.as_str().map(String::from))
.unwrap_or_else(|| "dark".to_owned());
Ok(AppSettings {
AppSettings {
launch_at_login,
theme,
})
}
}
}
@@ -18,28 +18,22 @@ fn main() {
.setup(|app| {
// Init store and load it from disk
let store = app.store("settings.json")?;
app.listen("store://change", |event| {
dbg!(event);
});
let app_settings = AppSettings::load_from_store(&store);
match app_settings {
Ok(app_settings) => {
let theme = app_settings.theme;
let launch_at_login = app_settings.launch_at_login;
println!("theme {theme}");
println!("launch_at_login {launch_at_login}");
store.set(
"appSettings",
json!({ "theme": theme, "launchAtLogin": launch_at_login }),
);
}
Err(err) => {
eprintln!("Error loading settings: {err}");
// Handle the error case if needed
return Err(err); // Convert the error to a Box<dyn Error> and return Err(err) here
}
}
let app_settings = AppSettings::from(store.as_ref());
let theme = app_settings.theme;
let launch_at_login = app_settings.launch_at_login;
println!("theme {theme}");
println!("launch_at_login {launch_at_login}");
store.set(
"appSettings",
json!({ "theme": theme, "launchAtLogin": launch_at_login }),
);
Ok(())
})
.run(tauri::generate_context!())