use crossterm::event::{KeyCode, KeyEvent};
use super::{OperationAction, OperationView};
use crate::keys;
impl OperationView {
pub fn handle_key(&mut self, key: KeyEvent) -> OperationAction {
match key.code {
k if keys::is_move_down(k) => {
self.select_next();
OperationAction::None
}
k if keys::is_move_up(k) => {
self.select_prev();
OperationAction::None
}
k if k == keys::GO_TOP => {
self.select_first();
OperationAction::None
}
k if k == keys::GO_BOTTOM => {
self.select_last();
OperationAction::None
}
KeyCode::Enter => {
if let Some(op) = self.selected_operation() {
OperationAction::Restore(op.id.clone())
} else {
OperationAction::None
}
}
k if k == keys::QUIT => OperationAction::Back,
KeyCode::Esc => OperationAction::Back,
_ => OperationAction::None,
}
}
}