diff --git a/src/app/handle.rs b/src/app/handle.rs index 084175e..ace99a1 100644 --- a/src/app/handle.rs +++ b/src/app/handle.rs @@ -15,6 +15,7 @@ impl App { let mode = self.screen.last_mut().unwrap(); match mode { CurrentScreen::Main + | CurrentScreen::Help | CurrentScreen::Logging | CurrentScreen::Receiving | CurrentScreen::Sending(SendingScreen::Files(FileMode::Picking)) @@ -24,13 +25,11 @@ impl App { KeyCode::Char('r') => self.recv(), KeyCode::Char('l') => self.logs(), KeyCode::Char('m') => self.main(), + KeyCode::Char('h') | KeyCode::Char('?') => self.help(), + KeyCode::Char('c') => self.service.refresh_peers().await, KeyCode::Esc => self.pop(), _ => match mode { - CurrentScreen::Main => { - if let KeyCode::Char('d') = code { - self.service.refresh_peers().await - } - } + CurrentScreen::Main | CurrentScreen::Help => {} CurrentScreen::Logging => match code { KeyCode::Left => super::change_log_level(-1), KeyCode::Right => super::change_log_level(1), @@ -177,6 +176,14 @@ impl App { } } + pub fn help(&mut self) { + let last = self.screen.last(); + match last { + Some(CurrentScreen::Help) => {} + _ => self.screen.push(CurrentScreen::Help), + } + } + // accept a content receive request fn accept(&mut self) { let Some(idx) = self.receiving_state.selected() else { diff --git a/src/app/mod.rs b/src/app/mod.rs index 7a45290..9b2b0aa 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -68,6 +68,7 @@ pub enum CurrentScreen { Receiving, Stopping, Logging, + Help, } #[derive(Debug, Clone, Copy, PartialEq, Eq)] diff --git a/src/app/widgets.rs b/src/app/widgets.rs index 6f2a954..cb2564b 100644 --- a/src/app/widgets.rs +++ b/src/app/widgets.rs @@ -156,6 +156,9 @@ impl Widget for &mut App { buf, ); } + CurrentScreen::Help => { + // TODO: display help + } CurrentScreen::Logging | CurrentScreen::Stopping => { outer_frame(¤t_screen, &LOGGING_MENU, area, buf); logger(area.inner(subscreen_margin), buf); diff --git a/src/lib.rs b/src/lib.rs index fe746aa..45727ba 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -115,7 +115,7 @@ impl JocalService { let (tx, rx) = mpsc::unbounded_channel(); let socket = UdpSocket::bind(LISTENING_SOCKET_ADDR).await?; socket.set_multicast_loop_v4(false)?; - socket.set_multicast_ttl_v4(8)?; // 8 hops out from localnet + socket.set_multicast_ttl_v4(1)?; // local subnet only socket.join_multicast_v4(MULTICAST_IP, Ipv4Addr::from_bits(0))?; let client = reqwest::ClientBuilder::new()