bhcli

A TUI for chatting on LE PHP Chats (onion)
git clone https://git.dasho.dev/n0tr1v/bhcli.git
Log | Files | Refs | README

commit b7006ae3013b8011e2fe33db97e16313b769fb50
parent fa8ec8cbebaf53db5fac2e61b1fa786f7abc5f4f
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu, 30 Mar 2023 23:13:15 -0700

cleanup

Diffstat:
Msrc/main.rs | 88+++++++++++++++++++++++++++----------------------------------------------------
1 file changed, 30 insertions(+), 58 deletions(-)

diff --git a/src/main.rs b/src/main.rs @@ -983,13 +983,7 @@ impl LeChatPHPClient { }); } - fn handle_input( - &mut self, - events: &Events, - app: &mut App, - messages: &Arc<Mutex<Vec<Message>>>, - users: &Arc<Mutex<Users>>, - ) -> std::result::Result<(), ExitSignal> { + fn handle_input(&mut self, events: &Events, app: &mut App, messages: &Arc<Mutex<Vec<Message>>>, users: &Arc<Mutex<Users>>, ) -> std::result::Result<(), ExitSignal> { match events.next() { Ok(Event::NeedLogin) => return Err(ExitSignal::NeedLogin), Ok(Event::Terminate) => return Err(ExitSignal::Terminate), @@ -998,13 +992,7 @@ impl LeChatPHPClient { } } - fn handle_event( - &mut self, - app: &mut App, - messages: &Arc<Mutex<Vec<Message>>>, - users: &Arc<Mutex<Users>>, - event: event::Event, - ) -> std::result::Result<(), ExitSignal> { + fn handle_event(&mut self, app: &mut App, messages: &Arc<Mutex<Vec<Message>>>, users: &Arc<Mutex<Users>>, event: event::Event, ) -> std::result::Result<(), ExitSignal> { match event { event::Event::Resize(_cols, _rows) => Ok(()), event::Event::FocusGained => Ok(()), @@ -1015,13 +1003,7 @@ impl LeChatPHPClient { } } - fn handle_key_event( - &mut self, - app: &mut App, - messages: &Arc<Mutex<Vec<Message>>>, - users: &Arc<Mutex<Users>>, - key_event: KeyEvent, - ) -> std::result::Result<(), ExitSignal> { + fn handle_key_event(&mut self, app: &mut App, messages: &Arc<Mutex<Vec<Message>>>, users: &Arc<Mutex<Users>>, key_event: KeyEvent, ) -> std::result::Result<(), ExitSignal> { match app.input_mode { InputMode::LongMessage => self.handle_long_message_mode_key_event(app, key_event, messages), InputMode::Normal => self.handle_normal_mode_key_event(app, key_event, messages), @@ -1029,44 +1011,11 @@ impl LeChatPHPClient { } } - fn handle_long_message_mode_key_event( - &mut self, - app: &mut App, - key_event: KeyEvent, - messages: &Arc<Mutex<Vec<Message>>>, - ) -> std::result::Result<(), ExitSignal> { + fn handle_long_message_mode_key_event(&mut self, app: &mut App, key_event: KeyEvent, messages: &Arc<Mutex<Vec<Message>>>, ) -> std::result::Result<(), ExitSignal> { match key_event { - KeyEvent { - code: KeyCode::Enter, - modifiers: KeyModifiers::NONE, .. - } - | KeyEvent { - code: KeyCode::Esc, - modifiers: KeyModifiers::NONE, .. - } => { - app.long_message = None; - app.input_mode = InputMode::Normal; - } - KeyEvent { - code: KeyCode::Char('d'), - modifiers: KeyModifiers::CONTROL, .. - } => { - if let Some(idx) = app.items.state.selected() { - if let Some(item) = app.items.items.get(idx) { - self.post_msg(PostType::Clean(item.date.to_owned(), item.text.text())) - .unwrap(); - let mut messages = messages.lock().unwrap(); - if let Some(pos) = messages - .iter() - .position(|m| m.date == item.date && m.text.text() == item.text.text()) - { - messages[pos].hide = !messages[pos].hide; - } - app.long_message = None; - app.input_mode = InputMode::Normal; - } - } - } + KeyEvent { code: KeyCode::Enter, modifiers: KeyModifiers::NONE, .. } | + KeyEvent { code: KeyCode::Esc, modifiers: KeyModifiers::NONE, .. } => self.handle_long_message_mode_key_event_esc(app), + KeyEvent { code: KeyCode::Char('d'), modifiers: KeyModifiers::CONTROL, .. } => self.handle_long_message_mode_key_event_ctrl_d(app, messages), _ => {} } Ok(()) @@ -1130,6 +1079,29 @@ impl LeChatPHPClient { Ok(()) } + fn handle_long_message_mode_key_event_esc(&mut self, app: &mut App) { + app.long_message = None; + app.input_mode = InputMode::Normal; + } + + fn handle_long_message_mode_key_event_ctrl_d(&mut self, app: &mut App, messages: &Arc<Mutex<Vec<Message>>>) { + if let Some(idx) = app.items.state.selected() { + if let Some(item) = app.items.items.get(idx) { + self.post_msg(PostType::Clean(item.date.to_owned(), item.text.text())) + .unwrap(); + let mut messages = messages.lock().unwrap(); + if let Some(pos) = messages + .iter() + .position(|m| m.date == item.date && m.text.text() == item.text.text()) + { + messages[pos].hide = !messages[pos].hide; + } + app.long_message = None; + app.input_mode = InputMode::Normal; + } + } + } + fn handle_normal_mode_key_event_up(&mut self, app: &mut App) { app.items.previous() }