use crate::bindings::convert::FerriResultExt;
use rquickjs::{JsLifetime, class::Trace};
use std::sync::Arc;
#[derive(JsLifetime, Trace)]
#[rquickjs::class(rename = "Disposable")]
pub struct DisposableJs {
#[qjs(skip_trace)]
inner: Arc<ferridriver::Disposable>,
}
impl DisposableJs {
#[must_use]
pub fn new(inner: ferridriver::Disposable) -> Self {
Self { inner: Arc::new(inner) }
}
}
#[rquickjs::methods]
impl DisposableJs {
#[qjs(rename = "dispose")]
pub async fn dispose(&self) -> rquickjs::Result<()> {
let inner = Arc::clone(&self.inner);
inner.dispose().await.into_js()
}
#[qjs(rename = "remove")]
pub async fn remove(&self) -> rquickjs::Result<()> {
let inner = Arc::clone(&self.inner);
inner.dispose().await.into_js()
}
}