2025-08-30 21:54:11 +08:00
|
|
|
use crate::app_config::MultiAppConfig;
|
2025-08-27 11:00:53 +08:00
|
|
|
use std::sync::Mutex;
|
2025-08-23 20:12:35 +08:00
|
|
|
|
|
|
|
|
/// 全局应用状态
|
|
|
|
|
pub struct AppState {
|
2025-08-30 21:54:11 +08:00
|
|
|
pub config: Mutex<MultiAppConfig>,
|
2025-08-23 20:12:35 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl AppState {
|
|
|
|
|
/// 创建新的应用状态
|
|
|
|
|
pub fn new() -> Self {
|
2025-08-30 21:54:11 +08:00
|
|
|
let config = MultiAppConfig::load().unwrap_or_else(|e| {
|
2025-08-27 11:00:53 +08:00
|
|
|
log::warn!("加载配置失败: {}, 使用默认配置", e);
|
2025-08-30 21:54:11 +08:00
|
|
|
MultiAppConfig::default()
|
2025-08-27 11:00:53 +08:00
|
|
|
});
|
|
|
|
|
|
2025-08-23 20:12:35 +08:00
|
|
|
Self {
|
2025-08-30 21:54:11 +08:00
|
|
|
config: Mutex::new(config),
|
2025-08-23 20:12:35 +08:00
|
|
|
}
|
|
|
|
|
}
|
2025-08-27 11:00:53 +08:00
|
|
|
|
2025-08-23 20:12:35 +08:00
|
|
|
/// 保存配置到文件
|
|
|
|
|
pub fn save(&self) -> Result<(), String> {
|
2025-08-30 21:54:11 +08:00
|
|
|
let config = self
|
|
|
|
|
.config
|
2025-08-27 11:00:53 +08:00
|
|
|
.lock()
|
2025-08-23 20:12:35 +08:00
|
|
|
.map_err(|e| format!("获取锁失败: {}", e))?;
|
2025-08-27 11:00:53 +08:00
|
|
|
|
2025-08-30 21:54:11 +08:00
|
|
|
config.save()
|
2025-08-23 20:12:35 +08:00
|
|
|
}
|
2025-08-25 21:41:35 +08:00
|
|
|
}
|