Vine/Server/Notification/
TerminalLifecycle.rs1use serde_json::Value;
13
14use crate::{Host::VineHost, dev_log};
15
16pub async fn TerminalLifecycle(Host:&dyn VineHost, MethodName:&str, Parameter:&Value) {
17 let EventName = format!("sky://terminal/{}", &MethodName["terminal.".len()..]);
18
19 Host.EmitToRenderer(&EventName, Parameter.clone());
20
21 let HandleNumeric = Parameter
24 .get("handle")
25 .and_then(|H| H.as_str())
26 .and_then(|S| S.trim_start_matches("terminal:").parse::<u64>().ok());
27
28 if let Some(TerminalId) = HandleNumeric {
29 match MethodName {
30 "terminal.sendText" => {
31 let Text = Parameter.get("text").and_then(|T| T.as_str()).unwrap_or("").to_string();
32
33 dev_log!("grpc", "[TerminalLifecycle] sendText id={} len={}", TerminalId, Text.len());
34
35 Host.SpawnSendTextToTerminal(TerminalId, Text);
36 },
37
38 "terminal.dispose" => {
39 dev_log!("grpc", "[TerminalLifecycle] dispose id={}", TerminalId);
40
41 Host.SpawnDisposeTerminal(TerminalId);
42 },
43
44 _ => {},
45 }
46 }
47}