compiled if statement in the read_only mode

This commit is contained in:
filipriec
2025-03-30 13:57:22 +02:00
parent 0a4f59cf8e
commit ed99ebf541
4 changed files with 99 additions and 32 deletions

View File

@@ -1,4 +1,5 @@
// src/modes/handlers/read_only.rs
// src/modes/canvas/read_only.rs
use crossterm::event::{KeyEvent};
use crate::config::binds::config::Config;
@@ -14,6 +15,7 @@ enum CharType {
}
pub async fn handle_read_only_event(
app_state: &crate::state::state::AppState,
key: KeyEvent,
config: &Config,
form_state: &mut FormState,
@@ -50,16 +52,27 @@ pub async fn handle_read_only_event(
// Try to match the current sequence against Read-Only mode bindings
if let Some(action) = config.matches_key_sequence_generalized(&sequence) {
let result = execute_action(
action,
form_state,
ideal_cursor_column,
key_sequence_tracker,
command_message,
current_position,
total_count,
grpc_client,
).await?;
let result = if action == "previous_entry" && app_state.ui.show_form {
crate::tui::functions::form::handle_action(
action,
form_state,
grpc_client,
current_position,
total_count,
ideal_cursor_column,
).await?
} else {
execute_action(
action,
form_state,
ideal_cursor_column,
key_sequence_tracker,
command_message,
current_position,
total_count,
grpc_client,
).await?
};
key_sequence_tracker.reset();
return Ok((false, result));
}
@@ -72,16 +85,27 @@ pub async fn handle_read_only_event(
// Since it's not part of a multi-key sequence, check for a direct action
if sequence.len() == 1 && !config.is_key_sequence_prefix(&sequence) {
if let Some(action) = config.get_read_only_action_for_key(key.code, key.modifiers) {
let result = execute_action(
action,
form_state,
ideal_cursor_column,
key_sequence_tracker,
command_message,
current_position,
total_count,
grpc_client,
).await?;
let result = if action == "previous_entry" && app_state.ui.show_form {
crate::tui::functions::form::handle_action(
action,
form_state,
grpc_client,
current_position,
total_count,
ideal_cursor_column,
).await?
} else {
execute_action(
action,
form_state,
ideal_cursor_column,
key_sequence_tracker,
command_message,
current_position,
total_count,
grpc_client,
).await?
};
key_sequence_tracker.reset();
return Ok((false, result));
}
@@ -91,16 +115,27 @@ pub async fn handle_read_only_event(
key_sequence_tracker.reset();
if let Some(action) = config.get_read_only_action_for_key(key.code, key.modifiers) {
let result = execute_action(
action,
form_state,
ideal_cursor_column,
key_sequence_tracker,
command_message,
current_position,
total_count,
grpc_client,
).await?;
let result = if action == "previous_entry" && app_state.ui.show_form {
crate::tui::functions::form::handle_action(
action,
form_state,
grpc_client,
current_position,
total_count,
ideal_cursor_column,
).await?
} else {
execute_action(
action,
form_state,
ideal_cursor_column,
key_sequence_tracker,
command_message,
current_position,
total_count,
grpc_client,
).await?
};
return Ok((false, result));
}
}
@@ -134,6 +169,7 @@ async fn execute_action(
*current_position = new_position;
match grpc_client.get_adresar_by_position(*current_position).await {
Ok(response) => {
// Replace update_from_response with direct field assignments
form_state.id = response.id;
form_state.values = vec![
response.firma, response.kz, response.drc,