Skip to main content

Mountain/RPC/CocoonService/GenericRequest/WindowDialogs/
ShowMessage.rs

1use serde_json::{Value, json};
2use tonic::Response;
3use CommonLibrary::UserInterface::{
4	DTO::MessageSeverity::MessageSeverity,
5	UserInterfaceProvider::UserInterfaceProvider,
6};
7use ::Vine::Generated::GenericResponse;
8
9use crate::Environment::MountainEnvironment::MountainEnvironment;
10
11pub async fn Fn(
12	RequestId:u64,
13
14	Params:Value,
15
16	Env:&MountainEnvironment,
17
18	Severity:MessageSeverity,
19) -> Response<GenericResponse> {
20	let Message = Params.get("message").and_then(|V| V.as_str()).unwrap_or("").to_string();
21
22	let Items:Option<Value> = Params
23		.get("items")
24		.cloned()
25		.filter(|V| V.is_array() && !V.as_array().unwrap().is_empty());
26
27	match Env.ShowMessage(Severity, Message, Items).await {
28		Ok(Some(Selected)) => super::super::FileSystem::OkResponse(RequestId, &json!({ "selectedItem": Selected })),
29
30		Ok(None) => super::super::FileSystem::OkResponse(RequestId, &Value::Null),
31
32		Err(Error) => super::super::FileSystem::ErrResponse(RequestId, -32000, Error.to_string()),
33	}
34}