Mountain/IPC/WindServiceHandlers/UI/
NotificationShow.rs1use serde_json::{Value, json};
4use tauri::{AppHandle, Emitter};
5use CommonLibrary::IPC::SkyEvent::SkyEvent;
6
7use crate::IPC::WindServiceHandlers::Utilities::JsonValueHelpers::{arg_string, arg_string_or, arg_val};
8
9fn NewId() -> String {
10 use std::sync::atomic::{AtomicU64, Ordering};
11
12 static SEQ:AtomicU64 = AtomicU64::new(1);
13
14 format!("notification-{}", SEQ.fetch_add(1, Ordering::Relaxed))
15}
16
17pub async fn Fn(ApplicationHandle:AppHandle, Arguments:Vec<Value>) -> Result<Value, String> {
18 let Message = arg_string(&Arguments, 0);
19
20 let Severity = arg_string_or(&Arguments, 1, "info");
21
22 let Actions = {
23 let V = arg_val(&Arguments, 2);
24
25 if V.is_null() { json!([]) } else { V }
26 };
27
28 let Id = NewId();
29
30 let _ = ApplicationHandle.emit(
31 SkyEvent::NotificationShow.AsStr(),
32 json!({
33 "id": Id,
34 "message": Message,
35 "severity": Severity,
36 "actions": Actions,
37 }),
38 );
39
40 Ok(json!(Id))
41}