Skip to main content

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}