Mountain/Vine/Server/Notification/DisposeStatusBarItem.rs
1//! Cocoon → Mountain `disposeStatusBarItem` notification.
2//! Emitted once by `Cocoon/.../Services/Window/StatusBar.ts:139` when an
3//! extension calls `StatusBarItem.dispose()` (or the whole subscription
4//! set tears down). Forwards onto the canonical
5//! `sky://statusbar/dispose-entry` channel so the Sky shim's
6//! fan-out listener removes the DOM node.
7
8use serde_json::{Value, json};
9use tauri::Emitter;
10
11use crate::{Vine::Server::MountainVinegRPCService::MountainVinegRPCService, dev_log};
12
13pub async fn DisposeStatusBarItem(Service:&MountainVinegRPCService, Parameter:&Value) {
14 let Id = Parameter.get("id").and_then(Value::as_str).unwrap_or("");
15
16 if Id.is_empty() {
17 dev_log!("grpc", "[StatusBar] dispose skip: missing id");
18
19 return;
20 }
21
22 let _ = Service
23 .ApplicationHandle()
24 .emit("sky://statusbar/dispose-entry", json!({ "id": Id }));
25
26 dev_log!("grpc", "[StatusBar] dispose id={}", Id);
27}