the search tui is not working yet
This commit is contained in:
@@ -48,6 +48,7 @@ use crossterm::event::KeyCode;
|
||||
use crossterm::event::{Event, KeyEvent};
|
||||
use tokio::sync::mpsc;
|
||||
use tokio::sync::mpsc::unbounded_channel;
|
||||
use tracing::{info, error};
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub enum EventOutcome {
|
||||
@@ -122,11 +123,11 @@ impl EventHandler {
|
||||
self.navigation_state.activate_find_file(options);
|
||||
}
|
||||
|
||||
// REFACTORED: This function now safely handles state changes.
|
||||
// This function handles state changes.
|
||||
async fn handle_search_palette_event(
|
||||
&mut self,
|
||||
key_event: KeyEvent,
|
||||
grpc_client: &mut GrpcClient,
|
||||
mut grpc_client: GrpcClient,
|
||||
form_state: &mut FormState,
|
||||
app_state: &mut AppState,
|
||||
) -> Result<EventOutcome> {
|
||||
@@ -175,6 +176,7 @@ impl EventHandler {
|
||||
_ => {}
|
||||
}
|
||||
|
||||
// --- START CORRECTED LOGIC ---
|
||||
if trigger_search {
|
||||
search_state.is_loading = true;
|
||||
search_state.results.clear();
|
||||
@@ -182,14 +184,19 @@ impl EventHandler {
|
||||
|
||||
let query = search_state.input.clone();
|
||||
let table_name = search_state.table_name.clone();
|
||||
let mut client = grpc_client.clone();
|
||||
let sender = self.search_result_sender.clone();
|
||||
|
||||
// We now move the grpc_client into the task, just like with login.
|
||||
tokio::spawn(async move {
|
||||
if let Ok(response) = client.search_table(table_name, query).await {
|
||||
let _ = sender.send(response.hits);
|
||||
} else {
|
||||
let _ = sender.send(vec![]);
|
||||
match grpc_client.search_table(table_name, query).await {
|
||||
Ok(response) => {
|
||||
info!("Search successful. Received {} hits.", response.hits.len());
|
||||
let _ = sender.send(response.hits);
|
||||
}
|
||||
Err(e) => {
|
||||
error!("gRPC search call failed: {}", e);
|
||||
let _ = sender.send(vec![]);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -232,7 +239,7 @@ impl EventHandler {
|
||||
|
||||
if app_state.ui.show_search_palette {
|
||||
if let Event::Key(key_event) = event {
|
||||
return self.handle_search_palette_event(key_event, grpc_client, form_state, app_state).await;
|
||||
return self.handle_search_palette_event(key_event, grpc_client.clone(), form_state, app_state).await;
|
||||
}
|
||||
return Ok(EventOutcome::Ok(String::new()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user