use std::time::{Duration, Instant};
use cursive::views::{Dialog, TextView};
use cursive::{Cursive, CursiveExt};
use cursive_async_view::{AsyncState, AsyncView};
fn main() {
let mut siv = Cursive::default();
siv.add_global_callback('q', Cursive::quit);
let start_time = Instant::now();
let async_view = AsyncView::new(&mut siv, move || {
if start_time.elapsed() > Duration::from_secs(5) {
AsyncState::Available(TextView::new("Krawoombah! Async loading is working 🦀"))
} else {
AsyncState::Pending
}
});
let dialog = Dialog::around(async_view.with_width(40)).button("Ok", |s| s.quit());
siv.add_layer(dialog);
siv.run();
}