Mountain/IPC/WindServiceHandler/
Progress.rs1#![allow(non_snake_case)]
2
3use serde_json::{Value, json};
6use tauri::AppHandle;
7
8pub async fn handle_progress_begin(AppHandle:AppHandle, Args:Vec<Value>) -> Result<Value, String> {
10 use tauri::Emitter;
11
12 let Location = Args.first().and_then(|V| V.as_str()).unwrap_or("notification").to_string();
13 let Title = Args.get(1).and_then(|V| V.as_str()).unwrap_or("").to_string();
14 let Cancellable = Args.get(2).and_then(|V| V.as_bool()).unwrap_or(false);
15
16 let Id = format!(
17 "progress-{}",
18 std::time::SystemTime::now()
19 .duration_since(std::time::UNIX_EPOCH)
20 .map(|D| D.as_millis())
21 .unwrap_or(0)
22 );
23
24 let _ = AppHandle.emit(
25 "sky://progress/begin",
26 json!({
27 "id": Id,
28 "location": Location,
29 "title": Title,
30 "cancellable": Cancellable,
31 }),
32 );
33
34 Ok(json!(Id))
35}
36
37pub async fn handle_progress_report(AppHandle:AppHandle, Args:Vec<Value>) -> Result<Value, String> {
39 use tauri::Emitter;
40
41 let Id = Args.first().and_then(|V| V.as_str()).unwrap_or("").to_string();
42 let Increment = Args.get(1).and_then(|V| V.as_f64()).unwrap_or(0.0);
43 let Message = Args.get(2).and_then(|V| V.as_str()).unwrap_or("").to_string();
44
45 let _ = AppHandle.emit(
46 "sky://progress/report",
47 json!({
48 "id": Id,
49 "increment": Increment,
50 "message": Message,
51 }),
52 );
53
54 Ok(Value::Null)
55}
56
57pub async fn handle_progress_end(AppHandle:AppHandle, Args:Vec<Value>) -> Result<Value, String> {
59 use tauri::Emitter;
60
61 let Id = Args.first().and_then(|V| V.as_str()).unwrap_or("").to_string();
62
63 let _ = AppHandle.emit("sky://progress/end", json!({ "id": Id }));
64
65 Ok(Value::Null)
66}