Skip to main content

Mountain/IPC/WindServiceHandlers/UI/
NotificationShow.rs

1//! Wire method: `notification:show`.
2
3use 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}