Mountain/Command/SourceControlManagement/
GetSCMResourceChanges.rs1
2use std::sync::Arc;
7
8use serde_json::{Value, json};
9use tauri::{State, command};
10
11use crate::{
12 ApplicationState::State::ApplicationState::{ApplicationState, MapLockError},
13 dev_log,
14};
15
16#[command]
17pub async fn GetSCMResourceChanges(
18 State:State<'_, Arc<ApplicationState>>,
19
20 ProviderIdentifier:String,
21) -> Result<Value, String> {
22 dev_log!("commands", "getting resource changes for provider: {}", ProviderIdentifier);
23
24 let resources_map = State
25 .Feature
26 .Markers
27 .SourceControlManagementResources
28 .lock()
29 .map_err(MapLockError)
30 .map_err(|Error| Error.to_string())?
31 .clone();
32
33 let provider_handle_u32 = ProviderIdentifier.parse::<u32>().unwrap_or(0);
34
35 let ProviderResources:Vec<_> = resources_map
36 .iter()
37 .flat_map(|(_group_id, group_resources)| group_resources.values())
38 .flat_map(|vec_resources| vec_resources.iter())
39 .filter(|r| r.ProviderHandle == provider_handle_u32)
40 .cloned()
41 .collect();
42
43 Ok(json!({ "resources": ProviderResources }))
44}