Mountain/IPC/WindServiceHandlers/UI/
Decoration.rs1#![allow(non_snake_case, unused_variables)]
2use std::sync::Arc;
8
9use serde_json::{Value, json};
10
11use crate::RunTime::ApplicationRunTime::ApplicationRunTime;
12
13pub async fn DecorationsGet(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
14 let Uri = Arguments
15 .first()
16 .and_then(|V| V.as_str())
17 .ok_or("decorations:get requires uri".to_string())?;
18
19 let Decoration = RunTime.Environment.ApplicationState.Feature.Decorations.GetDecoration(Uri);
20
21 Ok(Decoration.unwrap_or(Value::Null))
22}
23
24pub async fn DecorationsGetMany(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
25 let Uris:Vec<String> = Arguments
26 .first()
27 .and_then(|V| V.as_array())
28 .map(|Arr| Arr.iter().filter_map(|U| U.as_str().map(str::to_owned)).collect())
29 .unwrap_or_default();
30
31 let mut Result = serde_json::Map::new();
32
33 for Uri in &Uris {
34 if let Some(Decoration) = RunTime.Environment.ApplicationState.Feature.Decorations.GetDecoration(Uri) {
35 Result.insert(Uri.clone(), Decoration);
36 }
37 }
38
39 Ok(Value::Object(Result))
40}
41
42pub async fn DecorationsSet(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
43 let Uri = Arguments
44 .first()
45 .and_then(|V| V.as_str())
46 .ok_or("decorations:set requires uri".to_string())?;
47
48 let Decoration = Arguments.get(1).cloned().unwrap_or(Value::Null);
49
50 RunTime
51 .Environment
52 .ApplicationState
53 .Feature
54 .Decorations
55 .SetDecoration(Uri, Decoration);
56
57 Ok(Value::Null)
58}
59
60pub async fn DecorationsClear(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
61 let Uri = Arguments
62 .first()
63 .and_then(|V| V.as_str())
64 .ok_or("decorations:clear requires uri".to_string())?;
65
66 RunTime.Environment.ApplicationState.Feature.Decorations.ClearDecoration(Uri);
67
68 Ok(Value::Null)
69}