close elevation request dialog on submit to avoid frequent request

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages 2023-08-30 20:34:41 +08:00
parent 85b5c60d60
commit 54310b925d
2 changed files with 25 additions and 33 deletions

View File

@ -812,6 +812,8 @@ void showRequestElevationDialog(
} else { } else {
bind.sessionElevateDirect(sessionId: sessionId); bind.sessionElevateDirect(sessionId: sessionId);
} }
close();
showWaitUacDialog(sessionId, dialogManager, "wait-uac");
} }
return CustomAlertDialog( return CustomAlertDialog(

View File

@ -1891,42 +1891,17 @@ impl Connection {
} }
} }
} }
#[cfg(windows)]
Some(misc::Union::ElevationRequest(r)) => match r.union { Some(misc::Union::ElevationRequest(r)) => match r.union {
Some(elevation_request::Union::Direct(_)) => { Some(elevation_request::Union::Direct(_)) => {
#[cfg(windows)] self.handle_elevation_request(portable_client::StartPara::Direct)
{ .await;
let mut err = "No need to elevate".to_string();
if !crate::platform::is_installed() && !portable_client::running() {
err = portable_client::start_portable_service(
portable_client::StartPara::Direct,
)
.err()
.map_or("".to_string(), |e| e.to_string());
}
let mut misc = Misc::new();
misc.set_elevation_response(err);
let mut msg = Message::new();
msg.set_misc(misc);
self.send(msg).await;
}
} }
Some(elevation_request::Union::Logon(_r)) => { Some(elevation_request::Union::Logon(r)) => {
#[cfg(windows)] self.handle_elevation_request(portable_client::StartPara::Logon(
{ r.username, r.password,
let mut err = "No need to elevate".to_string(); ))
if !crate::platform::is_installed() && !portable_client::running() { .await;
err = portable_client::start_portable_service(
portable_client::StartPara::Logon(_r.username, _r.password),
)
.err()
.map_or("".to_string(), |e| e.to_string());
}
let mut misc = Misc::new();
misc.set_elevation_response(err);
let mut msg = Message::new();
msg.set_misc(misc);
self.send(msg).await;
}
} }
_ => {} _ => {}
}, },
@ -2009,6 +1984,21 @@ impl Connection {
true true
} }
#[cfg(windows)]
async fn handle_elevation_request(&mut self, para: portable_client::StartPara) {
let mut err = "No need to elevate".to_string();
if !crate::platform::is_installed() && !portable_client::running() {
err = portable_client::start_portable_service(para)
.err()
.map_or("".to_string(), |e| e.to_string());
}
let mut misc = Misc::new();
misc.set_elevation_response(err);
let mut msg = Message::new();
msg.set_misc(misc);
self.send(msg).await;
}
#[cfg(not(any(target_os = "android", target_os = "ios")))] #[cfg(not(any(target_os = "android", target_os = "ios")))]
fn change_resolution(&mut self, r: &Resolution) { fn change_resolution(&mut self, r: &Resolution) {
if self.keyboard { if self.keyboard {