quinjet 0.0.69

A fast, live, keyboard-first Git source-control interface for the terminal
#[cfg_attr(not(test), expect(clippy::wildcard_imports, reason = "shared"))]
use super::*;

impl App {
    pub(super) fn handle_stack_inspector_key(
        &mut self,
        key: KeyEvent,
        now: Instant,
    ) -> Option<Vec<AppEffect>> {
        if self.view != View::PullRequests || self.pull_request_stack.is_none() {
            return None;
        }
        let mut effects = Vec::new();
        match key.code {
            KeyCode::Char('1') => {
                self.select_stack_member_section(StackMemberSection::Files, &mut effects);
            }
            KeyCode::Char('2') => {
                self.select_stack_member_section(StackMemberSection::Summary, &mut effects);
            }
            KeyCode::Char('3') => {
                self.select_stack_member_section(StackMemberSection::Conversation, &mut effects);
            }
            KeyCode::Char('4') => {
                self.select_stack_member_section(StackMemberSection::Checks, &mut effects);
            }
            KeyCode::Char('5') => {
                self.select_stack_member_section(StackMemberSection::Commits, &mut effects);
            }
            KeyCode::Char('d') => self.open_pull_request_stack_diff(&mut effects),
            KeyCode::Char('r') => self.open_stack_member_review(&mut effects, now),
            KeyCode::Char('p' | '[') => {
                let _ = self.move_pull_request_stack_cursor(-1, false, now);
            }
            KeyCode::Char('n' | ']') => {
                let _ = self.move_pull_request_stack_cursor(1, false, now);
            }
            KeyCode::Char('o') => self.open_selection_on_github(&mut effects, now),
            KeyCode::Char('t' | 'T') => {
                self.inspect_pull_request_stack_tip(now, &mut effects);
                self.set_focus(Focus::Content, &mut effects);
            }
            KeyCode::Up if key.modifiers.contains(KeyModifiers::SHIFT) => {
                let _ = self.move_pull_request_stack_cursor(-1, true, now);
            }
            KeyCode::Down if key.modifiers.contains(KeyModifiers::SHIFT) => {
                let _ = self.move_pull_request_stack_cursor(1, true, now);
            }
            KeyCode::Esc if self.close_pull_request_stack_diff(&mut effects) => {}
            KeyCode::Char('P' | 'F' | 'S' | 'z' | '/') => {}
            _ => return None,
        }
        Some(effects)
    }
}