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