mod app;
mod notes;
mod render;
mod search;
mod ui;
use anyhow::Result;
use crossterm::event::{self, Event};
use std::time::Duration;
fn main() -> Result<()> {
let mut app = app::App::new()?;
let mut terminal = ratatui::init();
crossterm::execute!(std::io::stdout(), crossterm::event::EnableMouseCapture)?;
let result = run(&mut terminal, &mut app);
let _ = crossterm::execute!(std::io::stdout(), crossterm::event::DisableMouseCapture);
ratatui::restore();
result
}
fn run(terminal: &mut ratatui::DefaultTerminal, app: &mut app::App) -> Result<()> {
while !app.quit {
terminal.draw(|f| ui::draw(f, app))?;
if event::poll(Duration::from_millis(100))? {
match event::read()? {
Event::Key(k) if k.kind != event::KeyEventKind::Release => app.on_key(k),
Event::Mouse(m) => app.on_mouse(m),
_ => {}
}
}
app.tick();
}
app.save_now();
Ok(())
}