use std::sync::mpsc;
use crate::engine::cache::{ViewerTableCacheKey, ViewerTextCacheEntry};
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum ViewerAsyncJobKind {
Markdown,
Code,
Csv,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ViewerAsyncJobKey {
pub path: String,
pub content_width: u16,
pub theme_name: String,
pub kind: ViewerAsyncJobKind,
}
pub enum ViewerAsyncResult {
Markdown(ViewerTextCacheEntry),
Code(ViewerTextCacheEntry),
Csv(ViewerTableCacheKey, Option<ViewerTextCacheEntry>),
}
pub struct ViewerAsyncDone {
pub key: ViewerAsyncJobKey,
pub result: ViewerAsyncResult,
}
#[derive(Default)]
pub struct ViewerAsyncState {
pub pending_key: Option<ViewerAsyncJobKey>,
pub rx: Option<mpsc::Receiver<ViewerAsyncDone>>,
}
impl ViewerAsyncState {
pub fn clear(&mut self) {
self.pending_key = None;
self.rx = None;
}
}