Mountain/Command/TreeView/
GetTreeViewItem.rs1#![allow(non_snake_case)]
2
3use std::sync::Arc;
7
8use CommonLibrary::{
9 Environment::Requires::Requires,
10 TreeView::TreeViewProvider::TreeViewProvider as CommonTreeViewProvider,
11};
12use serde_json::{Value, json};
13use tauri::{AppHandle, Manager, State, Wry, command};
14
15use crate::{
16 ApplicationState::State::ApplicationState::ApplicationState,
17 Environment::MountainEnvironment::MountainEnvironment,
18 RunTime::ApplicationRunTime::ApplicationRunTime,
19 dev_log,
20};
21
22#[command]
23pub async fn GetTreeViewItem(
24 ApplicationHandle:AppHandle<Wry>,
25
26 _State:State<'_, Arc<ApplicationState>>,
27
28 ViewId:String,
29
30 ElementHandle:String,
31) -> Result<Value, String> {
32 dev_log!("commands", "getting TreeView item for '{}', element: {}", ViewId, ElementHandle);
33
34 let RunTime = ApplicationHandle.state::<Arc<ApplicationRunTime>>().inner().clone();
35
36 let Environment:Arc<MountainEnvironment> = RunTime.Environment.clone();
37
38 let TreeProvider:Arc<dyn CommonTreeViewProvider> = Environment.Require();
39
40 match TreeProvider.GetTreeItem(ViewId.clone(), ElementHandle).await {
41 Ok(Item) => Ok(json!(Item)),
42
43 Err(Error) => {
44 let ErrorMessage = format!("Failed to get tree item for view '{}': {}", ViewId, Error);
45
46 dev_log!("commands", "error: {}", ErrorMessage);
47
48 Err(ErrorMessage)
49 },
50 }
51}