use crate::reply::convs::ConvRow;
use crate::reply::stream::Stream;
use crate::reply::transcript::Transcript;
mod absorb;
mod acts;
mod aim;
mod board;
mod channel;
mod claim;
mod clients;
mod config;
mod enroll;
mod fill;
mod listing;
mod login;
mod notice;
mod posted;
mod queue;
mod records;
mod spine;
mod start;
mod trail;
mod tuning;
mod unmake;
mod window;
pub use aim::Aim;
pub use board::{Bindings, Columns};
pub use channel::{Channel, Chunk, Held};
pub use config::Configuring;
pub use enroll::{Enrolling, Grade, Shown};
pub use fill::Fill;
pub use listing::Listing;
pub use login::Login;
pub use notice::Notice;
pub use posted::Posted;
pub use queue::Asking;
pub use spine::Forking;
pub use start::{Phase, Start};
pub use trail::Trail;
pub use tuning::{Edit, Tuning};
pub use unmake::Unmaking;
pub use window::{Hits, Lookup, Pages};
#[derive(Debug, Clone, Default)]
pub struct Model {
pub roster: Vec<Chunk>,
pub convs: Vec<ConvRow>,
pub answered: Option<Aim>,
pub roles: Option<Vec<crate::reply::roles::RoleRow>>,
pub tuning: Option<Tuning>,
pub listing: Option<Listing>,
pub machines: Option<Vec<crate::reply::clients::ClientRow>>,
pub configuring: Option<Configuring>,
pub config: Option<crate::reply::config::Config>,
pub lineages: Option<Vec<crate::reply::lineages::Lineage>>,
pub login: Option<Login>,
pub providers: Option<Vec<crate::reply::providers::ProviderRow>>,
pub offered: Option<Vec<String>>,
pub signin: Option<crate::reply::login::Signin>,
pub lookup: Option<Lookup>,
pub unmaking: Option<Unmaking>,
pub waiting: Vec<Asking>,
pub trails: Vec<Trail>,
pub columns: Vec<Columns>,
pub bindings: Vec<Bindings>,
pub holding: Option<Vec<crate::reply::balls::BoundBall>>,
pub marks: Option<String>,
pub pages: Vec<Pages>,
pub found: Vec<Hits>,
pub needle: String,
pub steps: Option<crate::reply::steps::Steps>,
pub files: Option<crate::reply::files::Files>,
pub rail: Option<crate::reply::rail::Rail>,
pub governing: Option<crate::reply::governing::Governing>,
pub forking: Forking,
pub transcript: Transcript,
pub live: Option<Stream>,
pub notice: Option<Notice>,
pub aim: Option<Aim>,
pub focus: crate::ui::keys::Pane,
pub column: crate::ui::Column,
pub reveal: bool,
pub conversation: Option<String>,
pub draft: String,
pub typed: String,
pub fill: Option<Fill>,
pub reason: String,
pub start: Option<Start>,
pub enroll: Option<Enrolling>,
pub outbox: Vec<Posted>,
}
impl Model {
pub fn revealing(&mut self, pane: crate::ui::keys::Pane) -> bool {
self.focus == pane && std::mem::take(&mut self.reveal)
}
}
#[cfg(test)]
mod tests;