lemoa/src/settings.rs

36 lines
1.0 KiB
Rust

use std::{fs::File, path::PathBuf};
use crate::gtk::glib;
use lemmy_api_common::sensitive::Sensitive;
use serde::{Deserialize, Serialize};
use crate::APP_ID;
#[derive(Deserialize, Serialize, Default)]
pub struct Preferences {
pub instance_url: String,
pub jwt: Option<Sensitive<String>>
}
pub fn data_path() -> PathBuf {
let mut path = glib::user_data_dir();
path.push(APP_ID);
std::fs::create_dir_all(&path).expect("Could not create directory.");
path.push("data.json");
path
}
pub fn save_prefs(prefs: &Preferences) {
let file = File::create(data_path()).expect("Could not create json file.");
serde_json::to_writer(file, &prefs).expect("Could not write data to json file");
}
pub fn get_prefs() -> Preferences {
if let Ok(file) = File::open(data_path()) {
// Deserialize data from file to vector
let prefs: Result<Preferences, serde_json::Error> = serde_json::from_reader(file);
if prefs.is_ok() {
return prefs.unwrap();
}
}
return Preferences::default();
}