Mountain/RPC/CocoonService/GenericRequest/WindowDialogs/
ShowMessage.rs1use 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}