DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/IPC/WindServiceHandlers/TreeView/
GetChildren.rs1use std::sync::Arc;
13
14use serde_json::{Value, json};
15use tauri::AppHandle;
16
17use crate::RunTime::ApplicationRunTime::ApplicationRunTime;
18
19pub async fn Fn(
20 ApplicationHandle:AppHandle,
21
22 RunTime:Arc<ApplicationRunTime>,
23
24 Arguments:Vec<Value>,
25) -> Result<Value, String> {
26 let ViewId = Arguments
27 .first()
28 .and_then(|V| V.get("viewId").or_else(|| V.get(0)))
29 .and_then(Value::as_str)
30 .unwrap_or("")
31 .to_string();
32
33 let ItemHandle = Arguments
34 .first()
35 .and_then(|V| V.get("treeItemHandle").or_else(|| V.get(1)))
36 .and_then(Value::as_str)
37 .unwrap_or("")
38 .to_string();
39
40 crate::dev_log!(
41 "tree-view",
42 "[TreeView] invoke:getChildren view={} parent={}",
43 ViewId,
44 ItemHandle
45 );
46
47 if ViewId.is_empty() {
48 return Err("tree:getChildren requires viewId".to_string());
49 }
50
51 let Parameters = json!({
52 "viewId": ViewId,
53 "treeItemHandle": ItemHandle,
54 });
55
56 let _ = crate::Vine::Client::WaitForClientConnection::Fn("cocoon-main", 5000).await;
62
63 match crate::Vine::Client::SendRequest::Fn(
64 "cocoon-main",
65 "$provideTreeChildren".to_string(),
66 Parameters,
67 5000,
70 )
71 .await
72 {
73 Ok(Value_) => {
74 match &Value_ {
75 Value::Object(_) | Value::Array(_) => Ok(Value_),
76
77 _ => Ok(json!({ "items": [] })),
80 }
81 },
82
83 Err(Error) => {
84 crate::IPC::DevLog::DebugOnce::Fn(
88 "tree-view",
89 &format!("get-children-error:{}", ViewId),
90 &format!(
91 "[TreeView] invoke:getChildren error view={} err={:?} (further occurrences silenced)",
92 ViewId, Error
93 ),
94 );
95
96 Ok(json!({ "items": [] }))
97 },
98 }
99}