Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/kasper9n/ferrum. Music library app for Mac, Linux and Windows ferrum.kasper.space
electron linux macos music music-library music-player napi windows
Something went wrong. Try again.
1.6 kB · 53 lines
Rust
at sqlite
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354use crate::data::Data;use crate::library::Paths;use crate::path_to_json;use anyhow::{Context, Result};use atomicwrites::AtomicFile;use atomicwrites::OverwriteBehavior::AllowOverwrite;use serde::{Deserialize, Serialize};use std::io::Write;
#[derive(Serialize, Deserialize, Debug, Clone)]#[cfg_attr(feature = "napi", napi(object))]pub struct ViewOptions { pub shown_playlist_folders: Vec<String>, /// Empty is treated as default pub columns: Vec<String>, /// Auto update checking #[serde(default)] pub no_auto_update: bool, pub skip_updating_to_version: Option<String>,}impl ViewOptions { pub fn load(paths: &Paths) -> ViewOptions { match path_to_json(&paths.view_options_file) { Ok(view_cache) => view_cache, Err(_) => ViewOptions { shown_playlist_folders: Vec::new(), columns: Vec::new(), no_auto_update: false, skip_updating_to_version: None, }, } } pub fn save(&self, file_path: &str) -> Result<()> { let json_str = serde_json::to_string(self).context("Error saving view.json")?; let af = AtomicFile::new(&file_path, AllowOverwrite); af.write(|f| f.write_all(json_str.as_bytes())) .context("Error writing view.json")?; Ok(()) }}
#[napi(js_name = "load_view_options")]#[allow(dead_code)]pub fn load_view_options() -> Result<ViewOptions> { let data = Data::get_blocking(); Ok(ViewOptions::load(&data.paths))}#[napi(js_name = "save_view_options")]#[allow(dead_code)]pub async fn save_view_options(view_options: ViewOptions, file_path: String) -> Result<()> { view_options.save(&file_path)?; Ok(())}