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