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