#[derive(Debug, Clone)]
pub(crate) struct AsyncLoadState {
loading: bool,
has_loaded: bool,
error: Option<String>,
}
impl AsyncLoadState {
pub(crate) const fn new() -> Self {
Self {
loading: false,
has_loaded: false,
error: None,
}
}
pub(crate) fn loading(&self) -> bool {
self.loading
}
pub(crate) fn has_loaded(&self) -> bool {
self.has_loaded
}
pub(crate) fn error(&self) -> Option<&str> {
self.error.as_deref()
}
pub(crate) fn start_loading(&mut self) {
self.loading = true;
self.error = None;
}
pub(crate) fn finish_loading(&mut self) {
self.loading = false;
self.has_loaded = true;
}
pub(crate) fn fail(&mut self, error: String) {
self.error = Some(error);
self.loading = false;
}
pub(crate) fn clear_error(&mut self) {
self.error = None;
}
pub(crate) fn set_has_loaded(&mut self) {
self.has_loaded = true;
}
}