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 let Page::Login(login_page) = &mut router.current {
|
||||
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
|
||||
if !outcome.get_message_if_ok().is_empty() {
|
||||
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 {
|
||||
let outcome = crate::pages::register::event::handle_register_event(
|
||||
event,
|
||||
|
||||
@@ -9,6 +9,7 @@ use crate::ui::handlers::context::DialogPurpose;
|
||||
use common::proto::komp_ac::auth::LoginResponse;
|
||||
use crate::pages::login::LoginFormState;
|
||||
use crate::state::pages::auth::UserRole;
|
||||
use canvas::DataProvider;
|
||||
use anyhow::{Context, Result, anyhow};
|
||||
use tokio::spawn;
|
||||
use tokio::sync::mpsc;
|
||||
@@ -108,7 +109,19 @@ pub async fn revert(
|
||||
login_state: &mut LoginFormState,
|
||||
app_state: &mut AppState,
|
||||
) -> String {
|
||||
// Clear the underlying state
|
||||
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();
|
||||
"Login reverted".to_string()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user