Mountain/RPC/CocoonService/Window/
ShowInputBox.rs1#![allow(non_snake_case)]
2
3use tonic::{Response, Status};
7use CommonLibrary::UserInterface::{
8 DTO::InputBoxOptionsDTO::InputBoxOptionsDTO,
9 UserInterfaceProvider::UserInterfaceProvider,
10};
11
12use crate::{
13 RPC::CocoonService::CocoonServiceImpl,
14 Vine::Generated::{ShowInputBoxRequest, ShowInputBoxResponse},
15 dev_log,
16};
17
18pub async fn Fn(
19 Service:&CocoonServiceImpl,
20 Request:ShowInputBoxRequest,
21) -> Result<Response<ShowInputBoxResponse>, Status> {
22 dev_log!("cocoon", "[CocoonService] show_input_box");
23
24 let Options = Some(InputBoxOptionsDTO {
25 Title:if Request.title.is_empty() { None } else { Some(Request.title) },
26 PlaceHolder:if Request.placeholder.is_empty() { None } else { Some(Request.placeholder) },
27 Value:if Request.value.is_empty() { None } else { Some(Request.value) },
28 Prompt:if Request.prompt.is_empty() { None } else { Some(Request.prompt) },
29 IsPassword:if Request.password { Some(true) } else { None },
30 IgnoreFocusOut:None,
31 });
32
33 match Service.environment.ShowInputBox(Options).await {
34 Ok(Some(Value)) => Ok(Response::new(ShowInputBoxResponse { value:Value, cancelled:false })),
35 Ok(None) => Ok(Response::new(ShowInputBoxResponse { value:String::new(), cancelled:true })),
36 Err(Error) => {
37 dev_log!("cocoon", "warn: [CocoonService] show_input_box failed: {}", Error);
38 Ok(Response::new(ShowInputBoxResponse { value:String::new(), cancelled:true }))
39 },
40 }
41}