Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/Command/SourceControlManagement/
GetSCMResourceChanges.rs

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