Mountain/IPC/WindServiceHandlers/UI/DecorationsGetMany.rs
1#![allow(unused_variables)]
2
3//! Wire method: `decorations:getMany`.
4//! Bulk-reads decorations for an array of URIs from the in-memory cache.
5
6use std::sync::Arc;
7
8use serde_json::{Value, json};
9
10use crate::RunTime::ApplicationRunTime::ApplicationRunTime;
11
12pub async fn Fn(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
13 let Uris:Vec<String> = Arguments
14 .first()
15 .and_then(|V| V.as_array())
16 .map(|Arr| Arr.iter().filter_map(|U| U.as_str().map(str::to_owned)).collect())
17 .unwrap_or_default();
18
19 let mut Result = serde_json::Map::new();
20
21 for Uri in &Uris {
22 if let Some(Decoration) = RunTime.Environment.ApplicationState.Feature.Decorations.GetDecoration(Uri) {
23 Result.insert(Uri.clone(), Decoration);
24 }
25 }
26
27 Ok(Value::Object(Result))
28}