use crate::managers::history::{HistoryEntry, HistoryManager}; use std::sync::Arc; use tauri::{AppHandle, State}; #[tauri::command] #[specta::specta] pub async fn get_history_entries( _app: AppHandle, history_manager: State<'_, Arc>, ) -> Result, String> { history_manager .get_history_entries() .await .map_err(|e| e.to_string()) } #[tauri::command] #[specta::specta] pub async fn toggle_history_entry_saved( _app: AppHandle, history_manager: State<'_, Arc>, id: i64, ) -> Result<(), String> { history_manager .toggle_saved_status(id) .await .map_err(|e| e.to_string()) } #[tauri::command] #[specta::specta] pub async fn get_audio_file_path( _app: AppHandle, history_manager: State<'_, Arc>, file_name: String, ) -> Result { let path = history_manager.get_audio_file_path(&file_name); path.to_str() .ok_or_else(|| "Invalid file path".to_string()) .map(|s| s.to_string()) } #[tauri::command] #[specta::specta] pub async fn delete_history_entry( _app: AppHandle, history_manager: State<'_, Arc>, id: i64, ) -> Result<(), String> { history_manager .delete_entry(id) .await .map_err(|e| e.to_string()) } #[tauri::command] #[specta::specta] pub async fn update_history_limit( app: AppHandle, history_manager: State<'_, Arc>, limit: usize, ) -> Result<(), String> { let mut settings = crate::settings::get_settings(&app); settings.history_limit = limit; crate::settings::write_settings(&app, settings); history_manager .cleanup_old_entries() .map_err(|e| e.to_string())?; Ok(()) } #[tauri::command] #[specta::specta] pub async fn update_recording_retention_period( app: AppHandle, history_manager: State<'_, Arc>, period: String, ) -> Result<(), String> { use crate::settings::RecordingRetentionPeriod; let retention_period = match period.as_str() { "never" => RecordingRetentionPeriod::Never, "preserve_limit" => RecordingRetentionPeriod::PreserveLimit, "days3" => RecordingRetentionPeriod::Days3, "weeks2" => RecordingRetentionPeriod::Weeks2, "months3" => RecordingRetentionPeriod::Months3, _ => return Err(format!("Invalid retention period: {}", period)), }; let mut settings = crate::settings::get_settings(&app); settings.recording_retention_period = retention_period; crate::settings::write_settings(&app, settings); history_manager .cleanup_old_entries() .map_err(|e| e.to_string())?; Ok(()) }