Mountain/RPC/CocoonService/SCM/
UpdateScmGroup.rs1use serde_json::json;
5use tauri::Emitter;
6use tonic::{Response, Status};
7use ::Vine::Generated::{Empty, UpdateScmGroupRequest};
8
9use crate::{RPC::CocoonService::CocoonServiceImpl, dev_log};
10
11pub async fn Fn(Service:&CocoonServiceImpl, Request:UpdateScmGroupRequest) -> Result<Response<Empty>, Status> {
12 dev_log!(
13 "cocoon",
14 "[CocoonService] update_scm_group: provider={} group={}",
15 Request.provider_id,
16 Request.group_id
17 );
18
19 let ResourceStates:Vec<serde_json::Value> = Request
20 .resource_states
21 .iter()
22 .map(|RS| {
23 json!({
24 "uri": RS.uri.as_ref().map(|U| U.value.as_str()).unwrap_or(""),
25 "decorations": RS.decorations,
26 })
27 })
28 .collect();
29
30 let _ = Service.environment.ApplicationHandle.emit(
34 "sky://scm/updateGroup",
35 json!({
36 "scmId": Request.provider_id,
37 "providerId": Request.provider_id,
38 "groupId": Request.group_id,
39 "resourceStates": ResourceStates,
40 }),
41 );
42
43 Ok(Response::new(Empty {}))
44}