bhcli

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

commit 30846c47600dfea75436c17bfce037f9e4e7fe1a
parent 12583ac857973dc9ad9e2e938ec4d9742f7c2390
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Mon, 27 Mar 2023 23:07:13 -0700

fmt

Diffstat:
Msrc/main.rs | 220++++++++++++++++---------------------------------------------------------------
1 file changed, 44 insertions(+), 176 deletions(-)

diff --git a/src/main.rs b/src/main.rs @@ -1078,39 +1078,21 @@ impl LeChatPHPClient { messages: &Arc<Mutex<Vec<Message>>>, ) -> std::result::Result<(), ExitSignal> { match key_event { - KeyEvent { - code: KeyCode::Char('/'), - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('/'), modifiers: KeyModifiers::NONE, .. } => { app.items.unselect(); app.input = "/".to_owned(); app.input_idx = app.input.width(); app.input_mode = InputMode::Editing; } - KeyEvent { - code: KeyCode::Char('j'), - modifiers: KeyModifiers::NONE, .. - } - | KeyEvent { - code: KeyCode::Down, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('j'), modifiers: KeyModifiers::NONE, .. } + | KeyEvent { code: KeyCode::Down, modifiers: KeyModifiers::NONE, .. } => { app.items.next(); } - KeyEvent { - code: KeyCode::Char('k'), - modifiers: KeyModifiers::NONE, .. - } - | KeyEvent { - code: KeyCode::Up, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('k'), modifiers: KeyModifiers::NONE, .. } + | KeyEvent { code: KeyCode::Up, modifiers: KeyModifiers::NONE, .. } => { app.items.previous(); } - KeyEvent { - code: KeyCode::Enter, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Enter, modifiers: KeyModifiers::NONE, .. } => { if let Some(idx) = app.items.state.selected() { if let Some(item) = app.items.items.get(idx) { app.long_message = Some(item.clone()); @@ -1118,10 +1100,7 @@ impl LeChatPHPClient { } } } - KeyEvent { - code: KeyCode::Backspace, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Backspace, modifiers: KeyModifiers::NONE, .. } => { if let Some(idx) = app.items.state.selected() { if let Some(item) = app.items.items.get(idx) { let mut messages = messages.lock().unwrap(); @@ -1138,14 +1117,8 @@ impl LeChatPHPClient { } } } - KeyEvent { - code: KeyCode::Char('y'), - modifiers: KeyModifiers::NONE, .. - } - | KeyEvent { - code: KeyCode::Char('c'), - modifiers: KeyModifiers::CONTROL, .. - } => { + KeyEvent { code: KeyCode::Char('y'), modifiers: KeyModifiers::NONE, .. } + | KeyEvent { code: KeyCode::Char('c'), modifiers: KeyModifiers::CONTROL, .. } => { if let Some(idx) = app.items.state.selected() { if let Some(item) = app.items.items.get(idx) { if let Some(upload_link) = &item.upload_link { @@ -1166,10 +1139,7 @@ impl LeChatPHPClient { } } } - KeyEvent { - code: KeyCode::Char('Y'), - modifiers: KeyModifiers::SHIFT, .. - } => { + KeyEvent { code: KeyCode::Char('Y'), modifiers: KeyModifiers::SHIFT, .. } => { if let Some(idx) = app.items.state.selected() { if let Some(item) = app.items.items.get(idx) { if let Some(upload_link) = &item.upload_link { @@ -1189,75 +1159,45 @@ impl LeChatPHPClient { } } } - KeyEvent { - code: KeyCode::Char('d'), - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('d'), modifiers: KeyModifiers::NONE, .. } => { if let Some(idx) = app.items.state.selected() { if let Some(item) = app.items.items.get(idx) { eprintln!("{:?}", item.text.text()); } } } - KeyEvent { - code: KeyCode::Char('D'), - modifiers: KeyModifiers::SHIFT, .. - } => { + KeyEvent { code: KeyCode::Char('D'), modifiers: KeyModifiers::SHIFT, .. } => { if let Some(idx) = app.items.state.selected() { if let Some(item) = app.items.items.get(idx) { eprintln!("{:?} {:?}", item.text, item.upload_link); } } } - KeyEvent { - code: KeyCode::Char('m'), - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('m'), modifiers: KeyModifiers::NONE, .. } => { let mut is_muted = self.is_muted.lock().unwrap(); *is_muted = !*is_muted; } - KeyEvent { - code: KeyCode::Char('M'), - modifiers: KeyModifiers::SHIFT, .. - } => { + KeyEvent { code: KeyCode::Char('M'), modifiers: KeyModifiers::SHIFT, .. } => { self.show_sys = !self.show_sys; } - KeyEvent { - code: KeyCode::Char('G'), - modifiers: KeyModifiers::SHIFT, .. - } => { + KeyEvent { code: KeyCode::Char('G'), modifiers: KeyModifiers::SHIFT, .. } => { self.display_guest_view = !self.display_guest_view; } - KeyEvent { - code: KeyCode::Char('H'), - modifiers: KeyModifiers::SHIFT, .. - } => { + KeyEvent { code: KeyCode::Char('H'), modifiers: KeyModifiers::SHIFT, .. } => { self.display_hidden_msgs = !self.display_hidden_msgs; } - KeyEvent { - code: KeyCode::Char('i'), - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('i'), modifiers: KeyModifiers::NONE, .. } => { app.input_mode = InputMode::Editing; app.items.unselect(); } - KeyEvent { - code: KeyCode::Char('Q'), - modifiers: KeyModifiers::SHIFT, .. - } => { + KeyEvent { code: KeyCode::Char('Q'), modifiers: KeyModifiers::SHIFT, .. } => { self.logout().unwrap(); return Err(ExitSignal::Terminate); } - KeyEvent { - code: KeyCode::Char('q'), - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('q'), modifiers: KeyModifiers::NONE, .. } => { return Err(ExitSignal::Terminate); } - KeyEvent { - code: KeyCode::Char('t'), - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('t'), modifiers: KeyModifiers::NONE, .. } => { if let Some(idx) = app.items.state.selected() { if let Some(username) = get_username( &self.base_client.username, @@ -1271,10 +1211,7 @@ impl LeChatPHPClient { } } } - KeyEvent { - code: KeyCode::Char('p'), - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('p'), modifiers: KeyModifiers::NONE, .. } => { if let Some(idx) = app.items.state.selected() { if let Some(username) = get_username( &self.base_client.username, @@ -1288,10 +1225,7 @@ impl LeChatPHPClient { } } } - KeyEvent { - code: KeyCode::Char('k'), - modifiers: KeyModifiers::CONTROL, .. - } => { + KeyEvent { code: KeyCode::Char('k'), modifiers: KeyModifiers::CONTROL, .. } => { if let Some(idx) = app.items.state.selected() { if let Some(username) = get_username( &self.base_client.username, @@ -1305,28 +1239,16 @@ impl LeChatPHPClient { } } } - KeyEvent { - code: KeyCode::Char('u'), - modifiers: KeyModifiers::CONTROL, .. - } - | KeyEvent { - code: KeyCode::PageUp, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('u'), modifiers: KeyModifiers::CONTROL, .. } + | KeyEvent { code: KeyCode::PageUp, modifiers: KeyModifiers::NONE, .. } => { if let Some(idx) = app.items.state.selected() { app.items.state.select(idx.checked_sub(10).or(Some(0))); } else { app.items.next(); } } - KeyEvent { - code: KeyCode::Char('d'), - modifiers: KeyModifiers::CONTROL, .. - } - | KeyEvent { - code: KeyCode::PageDown, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Char('d'), modifiers: KeyModifiers::CONTROL, .. } + | KeyEvent { code: KeyCode::PageDown, modifiers: KeyModifiers::NONE, .. } => { if let Some(idx) = app.items.state.selected() { let wanted_idx = idx + 10; let max_idx = app.items.items.len() - 1; @@ -1336,16 +1258,10 @@ impl LeChatPHPClient { app.items.next(); } } - KeyEvent { - code: KeyCode::Esc, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Esc, modifiers: KeyModifiers::NONE, .. } => { app.items.unselect(); } - KeyEvent { - code: KeyCode::Char('u'), - modifiers: KeyModifiers::SHIFT, .. - } => { + KeyEvent { code: KeyCode::Char('u'), modifiers: KeyModifiers::SHIFT, .. } => { app.items.state.select(Some(0)); } _ => {} @@ -1360,10 +1276,7 @@ impl LeChatPHPClient { users: &Arc<Mutex<Users>>, ) -> std::result::Result<(), ExitSignal> { match key_event { - KeyEvent { - code: KeyCode::Enter, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Enter, modifiers: KeyModifiers::NONE, .. } => { if FIND_RGX.is_match(&app.input) { return Ok(()); } @@ -1467,10 +1380,7 @@ impl LeChatPHPClient { self.post_msg(PostType::Post(input, None)).unwrap(); } } - KeyEvent { - code: KeyCode::Tab, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Tab, modifiers: KeyModifiers::NONE, .. } => { let (p1, p2) = app.input.split_at(app.input_idx); if p2 == "" || p2.chars().nth(0) == Some(' ') { let mut parts: Vec<&str> = p1.split(" ").collect(); @@ -1504,41 +1414,26 @@ impl LeChatPHPClient { } } } - KeyEvent { - code: KeyCode::Char('c'), - modifiers: KeyModifiers::CONTROL, .. - } => { + KeyEvent { code: KeyCode::Char('c'), modifiers: KeyModifiers::CONTROL, .. } => { app.clear_filter(); app.input = "".to_owned(); app.input_idx = 0; app.input_mode = InputMode::Normal; } - KeyEvent { - code: KeyCode::Char('a'), - modifiers: KeyModifiers::CONTROL, .. - } => { + KeyEvent { code: KeyCode::Char('a'), modifiers: KeyModifiers::CONTROL, .. } => { app.input_idx = 0; } - KeyEvent { - code: KeyCode::Char('e'), - modifiers: KeyModifiers::CONTROL, .. - } => { + KeyEvent { code: KeyCode::Char('e'), modifiers: KeyModifiers::CONTROL, .. } => { app.input_idx = app.input.width(); } - KeyEvent { - code: KeyCode::Char('f'), - modifiers: KeyModifiers::CONTROL, .. - } => { + KeyEvent { code: KeyCode::Char('f'), modifiers: KeyModifiers::CONTROL, .. } => { if let Some(idx) = app.input.chars().skip(app.input_idx).position(|c| c == ' ') { app.input_idx = std::cmp::min(app.input_idx + idx + 1, app.input.width()); } else { app.input_idx = app.input.width(); } } - KeyEvent { - code: KeyCode::Char('b'), - modifiers: KeyModifiers::CONTROL, .. - } => { + KeyEvent { code: KeyCode::Char('b'), modifiers: KeyModifiers::CONTROL, .. } => { if let Some(idx) = app.input_idx.checked_sub(2) { let tmp = app .input @@ -1555,10 +1450,7 @@ impl LeChatPHPClient { } } } - KeyEvent { - code: KeyCode::Char('v'), - modifiers: KeyModifiers::CONTROL, .. - } => { + KeyEvent { code: KeyCode::Char('v'), modifiers: KeyModifiers::CONTROL, .. } => { let mut ctx: ClipboardContext = ClipboardProvider::new().unwrap(); if let Ok(clipboard) = ctx.get_contents() { let byte_position = byte_pos(&app.input, app.input_idx).unwrap(); @@ -1566,67 +1458,43 @@ impl LeChatPHPClient { app.input_idx += clipboard.width(); } } - KeyEvent { - code: KeyCode::Left, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Left, modifiers: KeyModifiers::NONE, .. } => { if app.input_idx > 0 { app.input_idx -= 1; } } - KeyEvent { - code: KeyCode::Right, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Right, modifiers: KeyModifiers::NONE, .. } => { if app.input_idx < app.input.width() { app.input_idx += 1; } } - KeyEvent { - code: KeyCode::Down, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Down, modifiers: KeyModifiers::NONE, .. } => { app.input_mode = InputMode::Normal; app.items.next(); } - KeyEvent { - code: KeyCode::Char(c), - modifiers: KeyModifiers::NONE, .. - } - | KeyEvent { - code: KeyCode::Char(c), - modifiers: KeyModifiers::SHIFT, .. - } => { + KeyEvent { code: KeyCode::Char(c), modifiers: KeyModifiers::NONE, .. } + | KeyEvent { code: KeyCode::Char(c), modifiers: KeyModifiers::SHIFT, .. } => { let byte_position = byte_pos(&app.input, app.input_idx).unwrap(); app.input.insert(byte_position, c); app.input_idx += 1; app.update_filter(); } - KeyEvent { - code: KeyCode::Backspace, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Backspace, modifiers: KeyModifiers::NONE, .. } => { if app.input_idx > 0 { app.input_idx -= 1; app.input = remove_at(&app.input, app.input_idx); app.update_filter(); } } - KeyEvent { - code: KeyCode::Delete, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Delete, modifiers: KeyModifiers::NONE, .. } => { if app.input_idx > 0 && app.input_idx == app.input.width() { app.input_idx -= 1; } app.input = remove_at(&app.input, app.input_idx); app.update_filter(); } - KeyEvent { - code: KeyCode::Esc, - modifiers: KeyModifiers::NONE, .. - } => { + KeyEvent { code: KeyCode::Esc, modifiers: KeyModifiers::NONE, .. } => { app.input_mode = InputMode::Normal; } _ => {}