use crate::buf::BufferId;
use crate::js::TaskId;
use crate::js::TimerId;
use crate::prelude::*;
use crate::ui::tree::NodeId;
use compact_str::CompactString;
use tokio::sync::mpsc::UnboundedSender;
use tokio::time::Instant;
#[derive(Debug)]
pub enum JsMessage {
TimeoutResp(TimeoutResp),
ExCommandReq(ExCommandReq),
LoadImportResp(LoadImportResp),
TickAgainResp,
FsOpenResp(FsOpenResp),
FsReadResp(FsReadResp),
FsReadFileResp(FsReadFileResp),
FsReadTextFileResp(FsReadTextFileResp),
FsWriteResp(FsWriteResp),
LoadTreeSitterParserResp(LoadTreeSitterParserResp),
}
#[derive(Debug)]
pub struct TimeoutResp {
pub timer_id: TimerId,
pub expire_at: Instant,
pub delay: u32,
pub repeated: bool,
}
#[derive(Debug)]
pub struct ExCommandReq {
pub payload: CompactString,
pub current_buf_id: BufferId,
pub current_win_id: NodeId,
}
#[derive(Debug)]
pub struct LoadImportResp {
pub task_id: TaskId,
pub maybe_source: Option<TheResult<Vec<u8>>>,
}
#[derive(Debug)]
pub struct FsOpenResp {
pub task_id: TaskId,
pub maybe_result: Option<TheResult<Vec<u8>>>,
}
#[derive(Debug)]
pub struct FsReadResp {
pub task_id: TaskId,
pub maybe_result: Option<TheResult<Vec<u8>>>,
}
#[derive(Debug)]
pub struct FsReadFileResp {
pub task_id: TaskId,
pub maybe_result: Option<TheResult<Vec<u8>>>,
}
#[derive(Debug)]
pub struct FsReadTextFileResp {
pub task_id: TaskId,
pub maybe_result: Option<TheResult<Vec<u8>>>,
}
#[derive(Debug)]
pub struct FsWriteResp {
pub task_id: TaskId,
pub maybe_result: Option<TheResult<Vec<u8>>>,
}
#[derive(Debug)]
pub struct LoadTreeSitterParserResp {
pub task_id: TaskId,
pub maybe_result: Option<TheResult<Vec<u8>>>,
}
pub fn send_to_jsrt(master_tx: UnboundedSender<JsMessage>, message: JsMessage) {
master_tx.send(message).unwrap();
}