agentmux_srv/server/service/
client.rs1use crate::backend::obj::*;
7use crate::backend::service::{self, WebCallType, WebReturnType};
8use crate::backend::wcore;
9
10use super::super::AppState;
11
12pub(super) async fn handle_client_service(state: &AppState, call: &WebCallType) -> WebReturnType {
13 let store = &state.mstore;
14 let args = &call.args;
15 match call.method.as_str() {
16 "GetClientData" => match wcore::get_client(store) {
17 Ok(client) => {
18 WebReturnType::success(serde_json::to_value(&client).unwrap_or_default())
19 }
20 Err(e) => WebReturnType::error(e.to_string()),
21 },
22 "GetTab" => {
23 let tab_id: String = match service::get_arg(args, 0) {
24 Ok(v) => v,
25 Err(e) => return WebReturnType::error(e),
26 };
27 match store.must_get::<Tab>(&tab_id) {
28 Ok(tab) => WebReturnType::success(serde_json::to_value(&tab).unwrap_or_default()),
29 Err(e) => WebReturnType::error(e.to_string()),
30 }
31 }
32 "FocusWindow" => {
33 let window_id: String = match service::get_arg(args, 0) {
34 Ok(v) => v,
35 Err(e) => return WebReturnType::error(e),
36 };
37 match wcore::focus_window(store, &window_id) {
38 Ok(()) => WebReturnType::success_empty(),
39 Err(e) => WebReturnType::error(e.to_string()),
40 }
41 }
42 "AgreeTos" => match wcore::get_client(store) {
43 Ok(mut client) => {
44 client.tosagreed = chrono::Utc::now().timestamp_millis();
45 match store.update(&mut client) {
46 Ok(_) => WebReturnType::success_empty(),
47 Err(e) => WebReturnType::error(e.to_string()),
48 }
49 }
50 Err(e) => WebReturnType::error(e.to_string()),
51 },
52 "GetAllConnStatus" => {
53 WebReturnType::success(
56 serde_json::to_value(crate::backend::remote::status::all()).unwrap_or_default(),
57 )
58 }
59 "TelemetryUpdate" => {
60 WebReturnType::success_empty()
62 }
63 _ => WebReturnType::error(format!("unknown client method: {}", call.method)),
64 }
65}