Add Rust modules: paths, jsonl, usage, watch, commands, state, settings
This commit is contained in:
parent
8abb0599f6
commit
14ffcf4bd3
9 changed files with 1226 additions and 0 deletions
72
src-tauri/src/commands.rs
Normal file
72
src-tauri/src/commands.rs
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
//! Tauri command surface — every JS-callable function lives here.
|
||||
|
||||
use crate::paths::{list_wsl_distros, resolve_roots, ResolvedRoots};
|
||||
use crate::settings::{save as save_settings, Settings};
|
||||
use crate::state::SharedState;
|
||||
use crate::usage::{build_snapshot, UsageSnapshot};
|
||||
use crate::watch::refresh_and_emit;
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn get_snapshot(state: tauri::State<'_, SharedState>) -> Result<UsageSnapshot, String> {
|
||||
let mut events = state.collect_events();
|
||||
events.sort_by_key(|e| e.ts);
|
||||
let caps = state.settings.read().caps.clone();
|
||||
Ok(build_snapshot(&events, &caps, chrono::Utc::now()))
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn get_settings(state: tauri::State<'_, SharedState>) -> Result<Settings, String> {
|
||||
Ok(state.settings.read().clone())
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn set_settings(
|
||||
state: tauri::State<'_, SharedState>,
|
||||
app: tauri::AppHandle,
|
||||
new: Settings,
|
||||
) -> Result<(), String> {
|
||||
{
|
||||
*state.settings.write() = new.clone();
|
||||
}
|
||||
save_settings(&new).map_err(|e| e.to_string())?;
|
||||
|
||||
// If roots-related settings changed, force a re-resolve + rescan.
|
||||
{
|
||||
let mut roots = state.roots.write();
|
||||
roots.clear();
|
||||
}
|
||||
refresh_and_emit(&app, state.inner(), None)
|
||||
.await
|
||||
.map_err(|e| e.to_string())?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn list_distros() -> Result<Vec<String>, String> {
|
||||
list_wsl_distros().map_err(|e| e.to_string())
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn get_roots(state: tauri::State<'_, SharedState>) -> Result<ResolvedRoots, String> {
|
||||
let s = state.settings.read().clone();
|
||||
Ok(resolve_roots(s.wsl_distro_override.as_deref(), s.include_native))
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn force_rescan(
|
||||
state: tauri::State<'_, SharedState>,
|
||||
app: tauri::AppHandle,
|
||||
) -> Result<(), String> {
|
||||
// Wipe caches so every file is reparsed from offset 0.
|
||||
state.files.write().clear();
|
||||
state.seen_ids.write().clear();
|
||||
refresh_and_emit(&app, state.inner(), None)
|
||||
.await
|
||||
.map_err(|e| e.to_string())
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn quit_app(app: tauri::AppHandle) -> Result<(), String> {
|
||||
app.exit(0);
|
||||
Ok(())
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue