106 lines
3.6 KiB
Rust
106 lines
3.6 KiB
Rust
|
|
// src/modes/handlers/event_helper.rs
|
|
//! Helper functions to handle the differences between legacy and library CanvasState traits
|
|
|
|
use crate::state::app::state::AppState;
|
|
use crate::state::pages::{
|
|
form::FormState,
|
|
auth::{LoginState, RegisterState},
|
|
};
|
|
use crate::state::pages::canvas_state::CanvasState as LegacyCanvasState;
|
|
use canvas::canvas::CanvasState as LibraryCanvasState;
|
|
|
|
/// Get the current field index from the appropriate state based on which UI is active
|
|
pub fn get_current_field_for_state(
|
|
app_state: &AppState,
|
|
login_state: &LoginState,
|
|
register_state: &RegisterState,
|
|
form_state: &FormState,
|
|
) -> usize {
|
|
if app_state.ui.show_login {
|
|
login_state.current_field() // Uses LegacyCanvasState
|
|
} else if app_state.ui.show_register {
|
|
register_state.current_field() // Uses LegacyCanvasState
|
|
} else {
|
|
form_state.current_field() // Uses LibraryCanvasState
|
|
}
|
|
}
|
|
|
|
/// Get the current cursor position from the appropriate state based on which UI is active
|
|
pub fn get_current_cursor_pos_for_state(
|
|
app_state: &AppState,
|
|
login_state: &LoginState,
|
|
register_state: &RegisterState,
|
|
form_state: &FormState,
|
|
) -> usize {
|
|
if app_state.ui.show_login {
|
|
login_state.current_cursor_pos() // Uses LegacyCanvasState
|
|
} else if app_state.ui.show_register {
|
|
register_state.current_cursor_pos() // Uses LegacyCanvasState
|
|
} else {
|
|
form_state.current_cursor_pos() // Uses LibraryCanvasState
|
|
}
|
|
}
|
|
|
|
/// Check if the appropriate state has unsaved changes based on which UI is active
|
|
pub fn get_has_unsaved_changes_for_state(
|
|
app_state: &AppState,
|
|
login_state: &LoginState,
|
|
register_state: &RegisterState,
|
|
form_state: &FormState,
|
|
) -> bool {
|
|
if app_state.ui.show_login {
|
|
login_state.has_unsaved_changes() // Uses LegacyCanvasState
|
|
} else if app_state.ui.show_register {
|
|
register_state.has_unsaved_changes() // Uses LegacyCanvasState
|
|
} else {
|
|
form_state.has_unsaved_changes() // Uses LibraryCanvasState
|
|
}
|
|
}
|
|
|
|
/// Get the current input from the appropriate state based on which UI is active
|
|
pub fn get_current_input_for_state<'a>(
|
|
app_state: &AppState,
|
|
login_state: &'a LoginState,
|
|
register_state: &'a RegisterState,
|
|
form_state: &'a FormState,
|
|
) -> &'a str {
|
|
if app_state.ui.show_login {
|
|
login_state.get_current_input() // Uses LegacyCanvasState
|
|
} else if app_state.ui.show_register {
|
|
register_state.get_current_input() // Uses LegacyCanvasState
|
|
} else {
|
|
form_state.get_current_input() // Uses LibraryCanvasState
|
|
}
|
|
}
|
|
|
|
/// Set the cursor position for the appropriate state based on which UI is active
|
|
pub fn set_current_cursor_pos_for_state(
|
|
app_state: &AppState,
|
|
login_state: &mut LoginState,
|
|
register_state: &mut RegisterState,
|
|
form_state: &mut FormState,
|
|
pos: usize,
|
|
) {
|
|
if app_state.ui.show_login {
|
|
login_state.set_current_cursor_pos(pos); // Uses LegacyCanvasState
|
|
} else if app_state.ui.show_register {
|
|
register_state.set_current_cursor_pos(pos); // Uses LegacyCanvasState
|
|
} else {
|
|
form_state.set_current_cursor_pos(pos); // Uses LibraryCanvasState
|
|
}
|
|
}
|
|
|
|
/// Get cursor position for mixed login/register vs form logic
|
|
pub fn get_cursor_pos_for_mixed_state(
|
|
app_state: &AppState,
|
|
login_state: &LoginState,
|
|
form_state: &FormState,
|
|
) -> usize {
|
|
if app_state.ui.show_login || app_state.ui.show_register {
|
|
login_state.current_cursor_pos() // Uses LegacyCanvasState
|
|
} else {
|
|
form_state.current_cursor_pos() // Uses LibraryCanvasState
|
|
}
|
|
}
|