Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/Command/SourceControlManagement/
GetAllSourceControlManagementState.rs

1//! Tauri command - full snapshot of every registered SCM provider,
2//! its resource groups, and the resources within those groups.
3//! Drives the SCM viewlet's first paint.
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 GetAllSourceControlManagementState(State:State<'_, Arc<ApplicationState>>) -> Result<Value, String> {
17	dev_log!("commands", "getting all SCM state for UI");
18
19	let Providers = State
20		.Feature
21		.Markers
22		.SourceControlManagementProviders
23		.lock()
24		.map_err(MapLockError)
25		.map_err(|Error| Error.to_string())?
26		.clone();
27
28	let Groups = State
29		.Feature
30		.Markers
31		.SourceControlManagementGroups
32		.lock()
33		.map_err(MapLockError)
34		.map_err(|Error| Error.to_string())?
35		.clone();
36
37	let Resources = State
38		.Feature
39		.Markers
40		.SourceControlManagementResources
41		.lock()
42		.map_err(MapLockError)
43		.map_err(|Error| Error.to_string())?
44		.clone();
45
46	Ok(json!({
47		"providers": Providers,
48		"groups": Groups,
49		"resources": Resources,
50	}))
51}