use std::sync::Arc;
use std::time::SystemTime;
use crate::tmux::detector::Status;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TmuxSession {
pub name: String,
pub display_name: Option<String>,
pub windows: u32,
pub attached: bool,
pub created: Option<SystemTime>,
pub last_activity: Option<SystemTime>,
pub current_path: Option<String>,
pub agent: Option<String>,
pub spec_path: Option<String>,
pub container_id: Option<String>,
}
impl TmuxSession {
pub fn display(&self) -> &str {
self.display_name.as_deref().unwrap_or(&self.name)
}
pub fn best_path(&self) -> Option<&str> {
self.spec_path.as_deref().or(self.current_path.as_deref())
}
}
#[derive(Debug, Clone)]
pub struct SessionView {
pub session: TmuxSession,
pub status: Status,
pub preview: Option<Arc<[u8]>>,
}
impl SessionView {
pub fn new(session: TmuxSession, status: Status, preview: Option<Arc<[u8]>>) -> Self {
Self {
session,
status,
preview,
}
}
pub fn name(&self) -> &str {
&self.session.name
}
pub fn display(&self) -> &str {
self.session.display()
}
}