diff --git a/src/main.rs b/src/main.rs index 9cc9feb..78de8ba 100644 --- a/src/main.rs +++ b/src/main.rs @@ -291,6 +291,17 @@ impl App { self.draw_status(frame, status_layout[1]); } + fn insert_selected_prompt(&mut self) { + let selected = self.next_reply_options[self.reply_state.selected().unwrap()].clone(); + if let Some(direction) = &selected.stage_direction { + self.insert_stage_direction(direction); + } + self.insert_reply(&selected.text); + self.save(); + self.speak(&selected.text.as_str()); + self.regenerate_responses(); + } + async fn on_event(&mut self, evt: event::Event) { if let Some(key) = evt.as_key_press_event() { match key.code { @@ -298,26 +309,12 @@ impl App { KeyCode::Down => self.reply_state.select_next(), KeyCode::Up => self.reply_state.select_previous(), KeyCode::Tab => { - let selected = self.next_reply_options[self.reply_state.selected().unwrap()].clone(); - if let Some(direction) = &selected.stage_direction { - self.insert_stage_direction(direction); - } - self.insert_reply(&selected.text); - self.save(); - self.speak(&selected.text.as_str()); - self.regenerate_responses(); + self.insert_selected_prompt(); }, KeyCode::Enter => { let next_msg = self.user_input.value_and_reset(); if next_msg.trim().is_empty() { - let selected = self.next_reply_options[self.reply_state.selected().unwrap()].clone(); - if let Some(direction) = &selected.stage_direction { - self.insert_stage_direction(direction); - } - self.insert_reply(&selected.text); - self.save(); - self.speak(&selected.text.as_str()); - self.regenerate_responses(); + self.insert_selected_prompt(); } else { if next_msg.starts_with("/") { let mut parts = next_msg.splitn(2, " ");