Skip to main content

Mountain/IPC/WindServiceHandlers/UI/
NotificationShow.rs

1#![allow(unused_variables)]
2
3//! Wire method: `notification:show`.
4
5use serde_json::{Value, json};
6use tauri::{AppHandle, Emitter};
7use CommonLibrary::IPC::SkyEvent::SkyEvent;
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 = Arguments.first().and_then(|V| V.as_str()).unwrap_or("").to_string();
19
20	let Severity = Arguments.get(1).and_then(|V| V.as_str()).unwrap_or("info").to_string();
21
22	let Actions = Arguments.get(2).cloned().unwrap_or(json!([]));
23
24	let Id = NewId();
25
26	let _ = ApplicationHandle.emit(
27		SkyEvent::NotificationShow.AsStr(),
28		json!({
29			"id": Id,
30			"message": Message,
31			"severity": Severity,
32			"actions": Actions,
33		}),
34	);
35
36	Ok(json!(Id))
37}