diff --git a/src/ui/mod.rs b/src/ui/mod.rs index 6dc68cd..a088149 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -46,6 +46,9 @@ pub async fn run_tui(mut app: App) -> Result<()> { } async fn run_app(terminal: &mut Terminal, app: &mut App) -> Result<()> { + let mut last_refresh = std::time::Instant::now(); + let refresh_interval = Duration::from_secs(10); + loop { terminal.draw(|f| ui(f, app))?; @@ -53,7 +56,19 @@ async fn run_app(terminal: &mut Terminal, app: &mut App) -> Resul break; } - let event_available = event::poll(Duration::from_millis(100))?; + // Auto-refresh timeline + if last_refresh.elapsed() >= refresh_interval { + if app.mode == AppMode::Timeline { + app.load_timeline().await?; + } + last_refresh = std::time::Instant::now(); + } + + let poll_duration = refresh_interval + .checked_sub(last_refresh.elapsed()) + .unwrap_or_else(|| Duration::from_secs(0)); + + let event_available = event::poll(poll_duration.min(Duration::from_millis(100)))?; if event_available { let event = event::read()?;