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 let Decoration = RunTime.Environment.ApplicationState.Feature.Decorations.GetDecoration(Uri);
19 Ok(Decoration.unwrap_or(Value::Null))
20}
21
22pub async fn DecorationsGetMany(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
23 let Uris:Vec<String> = Arguments
24 .first()
25 .and_then(|V| V.as_array())
26 .map(|Arr| Arr.iter().filter_map(|U| U.as_str().map(str::to_owned)).collect())
27 .unwrap_or_default();
28
29 let mut Result = serde_json::Map::new();
30 for Uri in &Uris {
31 if let Some(Decoration) = RunTime.Environment.ApplicationState.Feature.Decorations.GetDecoration(Uri) {
32 Result.insert(Uri.clone(), Decoration);
33 }
34 }
35 Ok(Value::Object(Result))
36}
37
38pub async fn DecorationsSet(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
39 let Uri = Arguments
40 .first()
41 .and_then(|V| V.as_str())
42 .ok_or("decorations:set requires uri".to_string())?;
43 let Decoration = Arguments.get(1).cloned().unwrap_or(Value::Null);
44 RunTime
45 .Environment
46 .ApplicationState
47 .Feature
48 .Decorations
49 .SetDecoration(Uri, Decoration);
50 Ok(Value::Null)
51}
52
53pub async fn DecorationsClear(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
54 let Uri = Arguments
55 .first()
56 .and_then(|V| V.as_str())
57 .ok_or("decorations:clear requires uri".to_string())?;
58 RunTime.Environment.ApplicationState.Feature.Decorations.ClearDecoration(Uri);
59 Ok(Value::Null)
60}