bhcli

"Strange's fork of n0tr1v's bhcli (onion)"
git clone https://git.dasho.dev/Strange/bhcli.git
Log | Files | Refs | README

commit 9380ca9e23317359377fd2f9723976d4656a4fba
parent b4296b49b56c74306f2dc79caa1c93848fcd4195
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 13 Dec 2023 12:47:13 -0500

cleanup and fix gg pull request

Diffstat:
Msrc/main.rs | 35+++++++++++++++++------------------
1 file changed, 17 insertions(+), 18 deletions(-)

diff --git a/src/main.rs b/src/main.rs @@ -496,7 +496,8 @@ impl LeChatPHPClient { println!("Error: {}\nCheck Your Tor Connection", err); process::exit(0); } - }; let doc = Document::from(resp_txt.as_str()); + }; + let doc = Document::from(resp_txt.as_str()); if let Some(meta) = doc.find(Name("meta")).next() { let meta_content = meta.attr("content").context("meta content not found").unwrap().to_owned(); let index_url = META_REFRESH_RGX.captures(&meta_content).unwrap()[1].to_owned(); @@ -595,6 +596,9 @@ impl LeChatPHPClient { } fn handle_key_event(&mut self, app: &mut App, messages: &Arc<Mutex<Vec<Message>>>, users: &Arc<Mutex<Users>>, key_event: KeyEvent) -> Result<(), ExitSignal> { + if app.input_mode != InputMode::Normal { + self.last_key_event = None; + } 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), @@ -643,28 +647,13 @@ impl LeChatPHPClient { KeyEvent { code: KeyCode::PageDown, modifiers: KeyModifiers::NONE, .. } => self.handle_normal_mode_key_event_page_down(app), KeyEvent { code: KeyCode::Esc, modifiers: KeyModifiers::NONE, .. } => self.handle_normal_mode_key_event_esc(app), KeyEvent { code: KeyCode::Char('u'), modifiers: KeyModifiers::SHIFT, .. } => self.handle_normal_mode_key_event_shift_u(app), - KeyEvent { code: KeyCode::Char('g'), modifiers: KeyModifiers::NONE, .. } => { - // Handle "gg" key combination - if self.last_key_event.map_or(false, |last_event| last_event == KeyCode::Char('g')) { - self.handle_gg_key_combination(app); - } else { - // Store the current key event for future comparison - self.last_key_event = Some(KeyCode::Char('g')); - } - } - + KeyEvent { code: KeyCode::Char('g'), modifiers: KeyModifiers::NONE, .. } => self.handle_normal_mode_key_event_g(app), _ => {} } + self.last_key_event = Some(key_event.code); Ok(()) } - fn handle_gg_key_combination(&mut self, app: &mut App) { - app.items.select_top(); - //println!("Handling 'gg' key combination"); - // Reset the stored key event - self.last_key_event = None; - } - fn handle_editing_mode_key_event(&mut self, app: &mut App, key_event: KeyEvent, users: &Arc<Mutex<Users>>) -> Result<(), ExitSignal> { app.input_mode = InputMode::Editing; match key_event { @@ -829,6 +818,15 @@ impl LeChatPHPClient { self.display_guest_view = !self.display_guest_view; } + + fn handle_normal_mode_key_event_g(&mut self, app: &mut App) { + // Handle "gg" key combination + if self.last_key_event == Some(KeyCode::Char('g')) { + app.items.select_top(); + self.last_key_event = None; + } + } + fn handle_normal_mode_key_event_toggle_hidden(&mut self) { self.display_hidden_msgs = !self.display_hidden_msgs; } @@ -2646,6 +2644,7 @@ fn random_string(n: usize) -> String { std::str::from_utf8(&s).unwrap().to_owned() } +#[derive(PartialEq)] enum InputMode { LongMessage, Normal,