Skip to main content

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}