Files
Spectral-Insight-Mission-Plan/src-tauri/src/commands/defaults_commands.rs

77 lines
2.2 KiB
Rust
Raw Normal View History

use tauri::command;
use crate::error::AppError;
use crate::models::{MissionScanConfig, PlannerDefaults};
use std::path::PathBuf;
fn defaults_dir() -> PathBuf {
// Save next to the executable
std::env::current_exe()
.unwrap_or_else(|_| PathBuf::from("."))
.parent()
.unwrap_or_else(|| std::path::Path::new("."))
.to_path_buf()
}
#[command]
pub fn save_default_scan_config(config: MissionScanConfig) -> Result<(), AppError> {
let path = defaults_dir().join("scan_defaults.json");
let content = serde_json::to_string_pretty(&config)?;
std::fs::write(path, content)?;
Ok(())
}
#[command]
pub fn load_default_scan_config() -> Result<MissionScanConfig, AppError> {
let path = defaults_dir().join("scan_defaults.json");
if path.exists() {
let content = std::fs::read_to_string(path)?;
let config: MissionScanConfig = serde_json::from_str(&content)?;
Ok(config)
} else {
Ok(MissionScanConfig::default())
}
}
#[command]
pub fn save_default_background(path: String) -> Result<(), AppError> {
let file_path = defaults_dir().join("background_default.txt");
std::fs::write(file_path, &path)?;
Ok(())
}
#[command]
pub fn load_default_background() -> Result<Option<String>, AppError> {
let file_path = defaults_dir().join("background_default.txt");
if file_path.exists() {
let content = std::fs::read_to_string(file_path)?;
let trimmed = content.trim().to_string();
if trimmed.is_empty() {
Ok(None)
} else {
Ok(Some(trimmed))
}
} else {
Ok(None)
}
}
#[command]
pub fn save_planner_defaults(config: PlannerDefaults) -> Result<(), AppError> {
let path = defaults_dir().join("planner_defaults.json");
let content = serde_json::to_string_pretty(&config)?;
std::fs::write(path, content)?;
Ok(())
}
#[command]
pub fn load_planner_defaults() -> Result<PlannerDefaults, AppError> {
let path = defaults_dir().join("planner_defaults.json");
if path.exists() {
let content = std::fs::read_to_string(path)?;
let config: PlannerDefaults = serde_json::from_str(&content)?;
Ok(config)
} else {
Ok(PlannerDefaults::default())
}
}