revert works on login, now do the same for other pages as well
This commit is contained in:
@@ -365,11 +365,26 @@ impl EventHandler {
|
|||||||
if !overlay_active {
|
if !overlay_active {
|
||||||
if let Page::Login(login_page) = &mut router.current {
|
if let Page::Login(login_page) = &mut router.current {
|
||||||
let outcome =
|
let outcome =
|
||||||
login::event::handle_login_event(event, app_state, login_page)?;
|
login::event::handle_login_event(event.clone(), app_state, login_page)?;
|
||||||
// Only return if the login page actually consumed the key
|
// Only return if the login page actually consumed the key
|
||||||
if !outcome.get_message_if_ok().is_empty() {
|
if !outcome.get_message_if_ok().is_empty() {
|
||||||
return Ok(outcome);
|
return Ok(outcome);
|
||||||
}
|
}
|
||||||
|
// Allow core actions via space-sequence even on Login page
|
||||||
|
if let Event::Key(k) = &event {
|
||||||
|
if let Some(sequence_action) = config.matches_key_sequence_generalized(&[k.code]) {
|
||||||
|
if matches!(sequence_action, "revert" | "save" | "force_quit" | "save_and_quit") {
|
||||||
|
let outcome = self.handle_core_action(
|
||||||
|
sequence_action,
|
||||||
|
auth_state,
|
||||||
|
terminal,
|
||||||
|
app_state,
|
||||||
|
router,
|
||||||
|
).await?;
|
||||||
|
return Ok(outcome);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if let Page::Register(register_page) = &mut router.current {
|
} else if let Page::Register(register_page) = &mut router.current {
|
||||||
let outcome = crate::pages::register::event::handle_register_event(
|
let outcome = crate::pages::register::event::handle_register_event(
|
||||||
event,
|
event,
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ use crate::ui::handlers::context::DialogPurpose;
|
|||||||
use common::proto::komp_ac::auth::LoginResponse;
|
use common::proto::komp_ac::auth::LoginResponse;
|
||||||
use crate::pages::login::LoginFormState;
|
use crate::pages::login::LoginFormState;
|
||||||
use crate::state::pages::auth::UserRole;
|
use crate::state::pages::auth::UserRole;
|
||||||
|
use canvas::DataProvider;
|
||||||
use anyhow::{Context, Result, anyhow};
|
use anyhow::{Context, Result, anyhow};
|
||||||
use tokio::spawn;
|
use tokio::spawn;
|
||||||
use tokio::sync::mpsc;
|
use tokio::sync::mpsc;
|
||||||
@@ -108,7 +109,19 @@ pub async fn revert(
|
|||||||
login_state: &mut LoginFormState,
|
login_state: &mut LoginFormState,
|
||||||
app_state: &mut AppState,
|
app_state: &mut AppState,
|
||||||
) -> String {
|
) -> String {
|
||||||
|
// Clear the underlying state
|
||||||
login_state.clear();
|
login_state.clear();
|
||||||
|
|
||||||
|
// Also clear values inside the editor’s data provider
|
||||||
|
{
|
||||||
|
let dp = login_state.editor.data_provider_mut();
|
||||||
|
dp.set_field_value(0, "".to_string());
|
||||||
|
dp.set_field_value(1, "".to_string());
|
||||||
|
dp.set_current_field(0);
|
||||||
|
dp.set_current_cursor_pos(0);
|
||||||
|
dp.set_has_unsaved_changes(false);
|
||||||
|
}
|
||||||
|
|
||||||
app_state.hide_dialog();
|
app_state.hide_dialog();
|
||||||
"Login reverted".to_string()
|
"Login reverted".to_string()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user