use perspective_client::clone;
use yew::Component;
use crate::ApiFuture;
use crate::renderer::Renderer;
use crate::root::Root;
use crate::session::{ResetOptions, Session, TableIntermediateState};
pub fn delete_all<T: Component>(
session: &Session,
renderer: &Renderer,
root: &Root<T>,
) -> ApiFuture<()> {
session.table_unloaded.emit(false);
clone!(session, renderer, root);
ApiFuture::new(renderer.clone().with_lock(async move {
renderer.delete()?;
root.borrow_mut().take().ok_or("Already deleted")?.destroy();
session
.reset(ResetOptions {
config: true,
expressions: true,
table: Some(TableIntermediateState::Ejected),
..ResetOptions::default()
})
.await?;
Ok(())
}))
}