mirror of
https://github.com/alexpasmantier/television.git
synced 2025-06-06 19:45:23 +00:00
refactor: exit application on SIGINT / C-c
This commit is contained in:
parent
d68ae21630
commit
bd9b579feb
@ -74,7 +74,7 @@ theme = "TwoDark"
|
||||
# ------------------------
|
||||
[keybindings.Channel]
|
||||
# Quit the application
|
||||
quit = "esc"
|
||||
quit = ["esc", "ctrl-c"]
|
||||
# Scrolling through entries
|
||||
select_next_entry = ["down", "ctrl-n", "ctrl-j"]
|
||||
select_prev_entry = ["up", "ctrl-p", "ctrl-k"]
|
||||
|
@ -14,7 +14,7 @@ use crossterm::event::{
|
||||
KeyEvent, KeyEventKind, KeyModifiers,
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tokio::sync::mpsc;
|
||||
use tokio::{signal, sync::mpsc};
|
||||
use tracing::{debug, warn};
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
@ -160,7 +160,6 @@ impl EventLoop {
|
||||
//let mut reader = crossterm::event::EventStream::new();
|
||||
tokio::spawn(async move {
|
||||
loop {
|
||||
//let event = reader.next();
|
||||
let delay = tokio::time::sleep(tick_interval);
|
||||
let event_available = poll_event(tick_interval);
|
||||
|
||||
@ -171,6 +170,10 @@ impl EventLoop {
|
||||
tx.send(Event::Tick).unwrap_or_else(|_| warn!("Unable to send Tick event"));
|
||||
break;
|
||||
},
|
||||
_ = signal::ctrl_c() => {
|
||||
debug!("Received SIGINT");
|
||||
tx.send(Event::Input(Key::Ctrl('c'))).unwrap_or_else(|_| warn!("Unable to send Ctrl-C event"));
|
||||
},
|
||||
// if `delay` completes, pass to the next event "frame"
|
||||
() = delay => {
|
||||
tx.send(Event::Tick).unwrap_or_else(|_| warn!("Unable to send Tick event"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user