Mountain/Environment/StatusBarProvider/
entry_management.rs1use CommonLibrary::{Error::CommonError::CommonError, StatusBar::DTO::StatusBarEntryDTO::StatusBarEntryDTO};
7use log::info;
8use serde_json::json;
9use tauri::{Emitter, Manager};
10
11use super::super::{MountainEnvironment::MountainEnvironment, Utility};
12
13pub(super) async fn set_status_bar_entry_impl(
15 env:&MountainEnvironment,
16 entry:StatusBarEntryDTO,
17) -> Result<(), CommonError> {
18 info!("[StatusBarProvider] Setting entry: {}", entry.EntryIdentifier);
19
20 let mut items_guard = env
21 .ApplicationState
22 .Feature
23 .Markers
24 .ActiveStatusBarItems
25 .lock()
26 .map_err(Utility::MapApplicationStateLockErrorToCommonError)?;
27
28 items_guard.insert(entry.EntryIdentifier.clone(), entry.clone());
29
30 drop(items_guard);
31
32 env.ApplicationHandle
33 .emit("sky://statusbar/set-entry", entry)
34 .map_err(|error| CommonError::UserInterfaceInteraction { Reason:error.to_string() })
35}
36
37pub(super) async fn dispose_status_bar_entry_impl(
39 env:&MountainEnvironment,
40 entry_identifier:String,
41) -> Result<(), CommonError> {
42 info!("[StatusBarProvider] Disposing entry: {}", entry_identifier);
43
44 env.ApplicationState
45 .Feature
46 .Markers
47 .ActiveStatusBarItems
48 .lock()
49 .map_err(Utility::MapApplicationStateLockErrorToCommonError)?
50 .remove(&entry_identifier);
51
52 env.ApplicationHandle
53 .emit("sky://statusbar/dispose-entry", json!({ "EntryIdentifier": entry_identifier }))
54 .map_err(|error| CommonError::UserInterfaceInteraction { Reason:error.to_string() })
55}