Mountain/Vine/Server/Notification/
RegisterScmResourceGroup.rs1use serde_json::{Value, json};
21use tauri::Emitter;
22use CommonLibrary::SourceControlManagement::SourceControlManagementProvider::SourceControlManagementProvider;
23
24use crate::{Vine::Server::MountainVinegRPCService::MountainVinegRPCService, dev_log};
25
26pub async fn RegisterScmResourceGroup(Service:&MountainVinegRPCService, Parameter:&Value) {
27 let ScmHandle = Parameter
29 .get("scmHandle")
30 .or_else(|| Parameter.get("scm_handle"))
31 .and_then(Value::as_u64)
32 .unwrap_or(0) as u32;
33
34 let GroupHandleStr = Parameter
35 .get("groupHandle")
36 .or_else(|| Parameter.get("group_handle"))
37 .and_then(Value::as_str)
38 .unwrap_or("")
39 .to_string();
40
41 let GroupId = Parameter
42 .get("groupId")
43 .or_else(|| Parameter.get("group_id"))
44 .and_then(Value::as_str)
45 .unwrap_or("")
46 .to_string();
47
48 let Label = Parameter.get("label").and_then(Value::as_str).unwrap_or(&GroupId).to_string();
49
50 if GroupId.is_empty() {
51 dev_log!("provider-register", "[ProviderRegister] scm-group skip: missing group_id");
52
53 return;
54 }
55
56 let GroupData = json!({
63 "providerHandle": ScmHandle,
64 "groupId": &GroupId,
65 "label": &Label,
66 "resourceStates": [],
67 });
68
69 if let Err(Error) = Service
70 .RunTime()
71 .Environment
72 .UpdateSourceControlGroup(ScmHandle, GroupData)
73 .await
74 {
75 dev_log!(
76 "grpc",
77 "warn: [Scm] UpdateSourceControlGroup (seed) failed scm={} group={}: {}",
78 ScmHandle,
79 GroupId,
80 Error
81 );
82 }
83
84 let _ = Service.ApplicationHandle().emit(
85 "sky://scm/registerGroup",
86 json!({
87 "scmHandle": ScmHandle,
88 "groupHandle": &GroupHandleStr,
89 "groupId": &GroupId,
90 "label": &Label,
91 }),
92 );
93
94 dev_log!(
95 "grpc",
96 "[Scm] register group scm_handle={} group_id={} label={}",
97 ScmHandle,
98 GroupId,
99 Label
100 );
101}