Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/RPC/CocoonService/GenericNotification/
SkyEmit.rs

1#![allow(non_snake_case, unused_variables, dead_code, unused_imports)]
2
3//! Notification handlers that forward events to Sky via `app.emit()`.
4//! Covers: webview messages, status bar, output channels, progress,
5//! `openExternal`, and language configuration.
6
7use serde_json::{Value, json};
8use tauri::Emitter;
9
10use crate::Environment::MountainEnvironment::MountainEnvironment;
11
12// ── Webview ───────────────────────────────────────────────────────────────
13
14pub fn HandleOnDidReceiveMessage(Params:Value, Env:&MountainEnvironment) {
15	let Handle = Params.get("handle").and_then(|V| V.as_u64()).unwrap_or(0);
16	let Message = Params
17		.get("stringMessage")
18		.and_then(|V| V.as_str())
19		.map(|S| S.to_string())
20		.or_else(|| Params.get("bytesMessage").map(|_| "[binary]".to_string()))
21		.unwrap_or_default();
22	let _ = Env
23		.ApplicationHandle
24		.emit("sky://webview/post-message", json!({ "handle": Handle, "message": Message }));
25}
26
27pub fn HandleWebviewPostMessage(Params:Value, Env:&MountainEnvironment) {
28	let PanelId = Params.get("panelId").and_then(|V| V.as_str()).unwrap_or("").to_string();
29	let Method = Params.get("method").and_then(|V| V.as_str()).unwrap_or("").to_string();
30	let MsgParams = Params.get("params").cloned().unwrap_or(Value::Null);
31	let _ = Env.ApplicationHandle.emit(
32		"sky://webview/message",
33		json!({ "panelId": PanelId, "method": Method, "params": MsgParams }),
34	);
35}
36
37pub fn HandleWebviewDispose(Params:Value, Env:&MountainEnvironment) {
38	let PanelId = Params.get("panelId").and_then(|V| V.as_str()).unwrap_or("").to_string();
39	let _ = Env
40		.ApplicationHandle
41		.emit("sky://webview/dispose", json!({ "panelId": PanelId }));
42}
43
44// ── Status bar ────────────────────────────────────────────────────────────
45
46pub fn HandleSetStatusBarText(Params:Value, Env:&MountainEnvironment) {
47	let ItemId = Params.get("itemId").and_then(|V| V.as_str()).unwrap_or("").to_string();
48	let Text = Params.get("text").and_then(|V| V.as_str()).unwrap_or("").to_string();
49	let _ = Env
50		.ApplicationHandle
51		.emit("sky://statusbar/update", json!({ "id": ItemId, "text": Text }));
52}
53
54pub fn HandleDisposeStatusBarItem(Params:Value, Env:&MountainEnvironment) {
55	let ItemId = Params.get("itemId").and_then(|V| V.as_str()).unwrap_or("").to_string();
56	let _ = Env.ApplicationHandle.emit("sky://statusbar/dispose", json!({ "id": ItemId }));
57}
58
59// ── Output channels ───────────────────────────────────────────────────────
60
61pub fn HandleOutputCreate(Params:Value, Env:&MountainEnvironment) {
62	let Id = Params.get("id").and_then(|V| V.as_str()).unwrap_or("").to_string();
63	let Name = Params.get("name").and_then(|V| V.as_str()).unwrap_or("").to_string();
64	let _ = Env
65		.ApplicationHandle
66		.emit("sky://output/create", json!({ "id": Id, "name": Name }));
67}
68
69pub fn HandleOutputAppend(Params:Value, Env:&MountainEnvironment) {
70	let Channel = Params.get("channel").and_then(|V| V.as_str()).unwrap_or("").to_string();
71	let Text = Params.get("value").and_then(|V| V.as_str()).unwrap_or("").to_string();
72	let _ = Env
73		.ApplicationHandle
74		.emit("sky://output/append", json!({ "channel": Channel, "text": Text }));
75}
76
77pub fn HandleOutputAppendLine(Params:Value, Env:&MountainEnvironment) {
78	let Channel = Params.get("channel").and_then(|V| V.as_str()).unwrap_or("").to_string();
79	let Line = Params.get("value").and_then(|V| V.as_str()).unwrap_or("").to_string();
80	let _ = Env.ApplicationHandle.emit(
81		"sky://output/append",
82		json!({ "channel": Channel, "text": format!("{}\n", Line) }),
83	);
84}
85
86pub fn HandleOutputClear(Params:Value, Env:&MountainEnvironment) {
87	let Channel = Params.get("channel").and_then(|V| V.as_str()).unwrap_or("").to_string();
88	let _ = Env.ApplicationHandle.emit("sky://output/clear", json!({ "channel": Channel }));
89}
90
91pub fn HandleOutputShow(Params:Value, Env:&MountainEnvironment) {
92	let Channel = Params.get("channel").and_then(|V| V.as_str()).unwrap_or("").to_string();
93	let _ = Env.ApplicationHandle.emit("sky://output/show", json!({ "channel": Channel }));
94}
95
96pub fn HandleOutputDispose(Params:Value, Env:&MountainEnvironment) {
97	let Channel = Params.get("channel").and_then(|V| V.as_str()).unwrap_or("").to_string();
98	let _ = Env
99		.ApplicationHandle
100		.emit("sky://output/dispose", json!({ "channel": Channel }));
101}
102
103// ── Progress ──────────────────────────────────────────────────────────────
104
105pub fn HandleProgressStart(Params:Value, Env:&MountainEnvironment) {
106	let Id = Params.get("id").and_then(|V| V.as_str()).unwrap_or("").to_string();
107	let Title = Params.get("title").and_then(|V| V.as_str()).map(|S| S.to_string());
108	let Location = Params.get("location").cloned();
109	let Cancellable = Params.get("cancellable").and_then(|V| V.as_bool()).unwrap_or(false);
110	let _ = Env.ApplicationHandle.emit(
111		"sky://progress/start",
112		json!({ "id": Id, "title": Title, "location": Location, "cancellable": Cancellable }),
113	);
114}
115
116pub fn HandleProgressUpdate(Params:Value, Env:&MountainEnvironment) {
117	let Id = Params.get("id").and_then(|V| V.as_str()).unwrap_or("").to_string();
118	let Message = Params.get("message").and_then(|V| V.as_str()).map(|S| S.to_string());
119	let Increment = Params.get("increment").and_then(|V| V.as_f64());
120	let _ = Env.ApplicationHandle.emit(
121		"sky://progress/update",
122		json!({ "id": Id, "message": Message, "increment": Increment }),
123	);
124}
125
126pub fn HandleProgressComplete(Params:Value, Env:&MountainEnvironment) {
127	let Id = Params.get("id").and_then(|V| V.as_str()).unwrap_or("").to_string();
128	let _ = Env.ApplicationHandle.emit("sky://progress/complete", json!({ "id": Id }));
129}
130
131// ── Misc ──────────────────────────────────────────────────────────────────
132
133pub fn HandleOpenExternal(Params:Value, Env:&MountainEnvironment) {
134	let Url = Params.get("url").and_then(|V| V.as_str()).unwrap_or("").to_string();
135	let _ = Env.ApplicationHandle.emit("sky://native/openExternal", json!({ "url": Url }));
136}
137
138pub fn HandleSetLanguageConfiguration(Params:Value, Env:&MountainEnvironment) {
139	let Language = Params.get("language").and_then(|V| V.as_str()).unwrap_or("").to_string();
140	let _ = Env
141		.ApplicationHandle
142		.emit("sky://language/configure", json!({ "language": Language }));
143}