expected it to work like this, finally does
This commit is contained in:
@@ -89,35 +89,45 @@ impl EventHandler {
|
||||
return Ok((false, self.command_message.clone()));
|
||||
}
|
||||
} else if key.code == KeyCode::Right {
|
||||
if *current_position < total_count {
|
||||
// Allow navigation to total_count + 1 for new entries
|
||||
if *current_position <= total_count {
|
||||
*current_position += 1;
|
||||
match app_terminal.get_adresar_by_position(*current_position).await {
|
||||
Ok(response) => {
|
||||
// Update all form fields
|
||||
form_state.id = response.id;
|
||||
form_state.firma = response.firma;
|
||||
form_state.kz = response.kz;
|
||||
form_state.drc = response.drc;
|
||||
form_state.ulica = response.ulica;
|
||||
form_state.psc = response.psc;
|
||||
form_state.mesto = response.mesto;
|
||||
form_state.stat = response.stat;
|
||||
form_state.banka = response.banka;
|
||||
form_state.ucet = response.ucet;
|
||||
form_state.skladm = response.skladm;
|
||||
form_state.ico = response.ico;
|
||||
form_state.kontakt = response.kontakt;
|
||||
form_state.telefon = response.telefon;
|
||||
form_state.skladu = response.skladu;
|
||||
form_state.fax = response.fax;
|
||||
|
||||
form_state.current_field = 0;
|
||||
form_state.has_unsaved_changes = false;
|
||||
self.command_message = format!("Loaded entry {}", *current_position);
|
||||
}
|
||||
Err(e) => {
|
||||
self.command_message = format!("Error loading entry: {}", e);
|
||||
// Only load data if position is valid
|
||||
if *current_position <= total_count {
|
||||
match app_terminal.get_adresar_by_position(*current_position).await {
|
||||
Ok(response) => {
|
||||
// Update all form fields
|
||||
form_state.id = response.id;
|
||||
form_state.firma = response.firma;
|
||||
form_state.kz = response.kz;
|
||||
form_state.drc = response.drc;
|
||||
form_state.ulica = response.ulica;
|
||||
form_state.psc = response.psc;
|
||||
form_state.mesto = response.mesto;
|
||||
form_state.stat = response.stat;
|
||||
form_state.banka = response.banka;
|
||||
form_state.ucet = response.ucet;
|
||||
form_state.skladm = response.skladm;
|
||||
form_state.ico = response.ico;
|
||||
form_state.kontakt = response.kontakt;
|
||||
form_state.telefon = response.telefon;
|
||||
form_state.skladu = response.skladu;
|
||||
form_state.fax = response.fax;
|
||||
|
||||
form_state.current_field = 0;
|
||||
form_state.has_unsaved_changes = false;
|
||||
self.command_message = format!("Loaded entry {}", *current_position);
|
||||
}
|
||||
Err(e) => {
|
||||
self.command_message = format!("Error loading entry: {}", e);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Clear form when entering new entry position
|
||||
form_state.reset_to_empty();
|
||||
form_state.current_field = 0;
|
||||
self.command_message = "New entry mode".to_string();
|
||||
}
|
||||
return Ok((false, self.command_message.clone()));
|
||||
}
|
||||
|
||||
@@ -27,14 +27,6 @@ pub async fn run_ui() -> Result<(), Box<dyn std::error::Error>> {
|
||||
app_state.update_current_position(total_count.saturating_add(1)); // Start in new entry mode
|
||||
form_state.reset_to_empty();
|
||||
|
||||
// Load initial data if there are existing entries
|
||||
if total_count > 0 {
|
||||
let response = app_terminal
|
||||
.get_adresar_by_position(total_count)
|
||||
.await?;
|
||||
update_form_state_from_response(&mut form_state, response);
|
||||
}
|
||||
|
||||
loop {
|
||||
let total_count = app_terminal.get_adresar_count().await?;
|
||||
app_state.update_total_count(total_count);
|
||||
@@ -67,6 +59,10 @@ pub async fn run_ui() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
// Handle position changes and update form state
|
||||
if !event_handler.is_edit_mode {
|
||||
// Ensure position never exceeds total_count + 1
|
||||
if app_state.current_position > total_count + 1 {
|
||||
app_state.current_position = total_count + 1;
|
||||
}
|
||||
if app_state.current_position > total_count {
|
||||
// New entry - reset form
|
||||
form_state.reset_to_empty();
|
||||
|
||||
Reference in New Issue
Block a user