extern crate cursive_async_view;
use std::time::{Instant, Duration};
use cursive::views::{Dialog, TextView};
use cursive::Cursive;
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();
}