Mountain/Environment/TreeViewProvider/
UIState.rs1use CommonLibrary::{Error::CommonError::CommonError, IPC::SkyEvent::SkyEvent};
7use serde_json::json;
8use tauri::Emitter;
9
10use crate::{Environment::Utility, dev_log};
11
12pub(super) async fn set_tree_view_message(
14 env:&crate::Environment::MountainEnvironment::MountainEnvironment,
15
16 view_identifier:String,
17
18 message:Option<String>,
19) -> Result<(), CommonError> {
20 dev_log!(
21 "extensions",
22 "[TreeViewProvider] Setting message for view '{}': {:?}",
23 view_identifier,
24 message
25 );
26
27 {
28 let mut tree_view_guard = env
29 .ApplicationState
30 .Feature
31 .TreeViews
32 .ActiveTreeViews
33 .lock()
34 .map_err(Utility::ErrorMapping::MapApplicationStateLockErrorToCommonError)?;
35
36 if let Some(view_state) = tree_view_guard.get_mut(&view_identifier) {
37 view_state.Message = message.clone();
38 }
39 }
40
41 env.ApplicationHandle
42 .emit(
43 SkyEvent::TreeViewSetMessage.AsStr(),
44 json!({ "viewId": view_identifier, "message": message }),
45 )
46 .map_err(|Error| {
47 CommonError::UserInterfaceInteraction { Reason:format!("Failed to emit tree view message: {}", Error) }
48 })
49}
50
51pub(super) async fn set_tree_view_title(
53 env:&crate::Environment::MountainEnvironment::MountainEnvironment,
54
55 view_identifier:String,
56
57 title:Option<String>,
58
59 description:Option<String>,
60) -> Result<(), CommonError> {
61 dev_log!(
62 "extensions",
63 "[TreeViewProvider] Setting title/description for view '{}': {:?} {:?}",
64 view_identifier,
65 title,
66 description
67 );
68
69 {
70 let mut tree_view_guard = env
71 .ApplicationState
72 .Feature
73 .TreeViews
74 .ActiveTreeViews
75 .lock()
76 .map_err(Utility::ErrorMapping::MapApplicationStateLockErrorToCommonError)?;
77
78 if let Some(view_state) = tree_view_guard.get_mut(&view_identifier) {
79 view_state.Title = title.clone();
80
81 view_state.Description = description.clone();
82 }
83 }
84
85 env.ApplicationHandle
86 .emit(
87 SkyEvent::TreeViewSetTitle.AsStr(),
88 json!({
89 "viewId": view_identifier,
90 "title": title,
91 "description": description,
92 }),
93 )
94 .map_err(|Error| {
95 CommonError::UserInterfaceInteraction { Reason:format!("Failed to emit tree view title: {}", Error) }
96 })
97}
98
99pub(super) async fn set_tree_view_badge(
101 env:&crate::Environment::MountainEnvironment::MountainEnvironment,
102
103 view_identifier:String,
104
105 badge:Option<serde_json::Value>,
106) -> Result<(), CommonError> {
107 dev_log!(
108 "extensions",
109 "[TreeViewProvider] Setting badge for view '{}': {:?}",
110 view_identifier,
111 badge
112 );
113
114 {
116 let mut tree_view_guard = env
117 .ApplicationState
118 .Feature
119 .TreeViews
120 .ActiveTreeViews
121 .lock()
122 .map_err(Utility::ErrorMapping::MapApplicationStateLockErrorToCommonError)?;
123
124 if let Some(view_state) = tree_view_guard.get_mut(&view_identifier) {
125 if let Some(badge_value) = &badge {
127 let badge_str = badge_value.to_string();
128
129 if let Err(e) = view_state.SetBadge(badge_str) {
130 dev_log!("extensions", "warn: Failed to set badge for view '{}': {}", view_identifier, e);
131 }
132 }
133 }
134 }
135
136 env.ApplicationHandle
138 .emit(
139 SkyEvent::TreeViewSetBadge.AsStr(),
140 json!({ "viewId": view_identifier, "badge": badge }),
141 )
142 .map_err(|Error| {
143 CommonError::UserInterfaceInteraction { Reason:format!("Failed to emit tree view badge: {}", Error) }
144 })
145}