Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_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		if V.is_null() { json!([]) } else { V }
25	};
26
27	let Id = NewId();
28
29	let _ = ApplicationHandle.emit(
30		SkyEvent::NotificationShow.AsStr(),
31		json!({
32			"id": Id,
33			"message": Message,
34			"severity": Severity,
35			"actions": Actions,
36		}),
37	);
38
39	Ok(json!(Id))
40}