use chrono::{DateTime, Utc};
use identity::Principal;
use serde::{Deserialize, Serialize};
pub type SessionId = String;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub struct TermSize {
pub rows: u16,
pub cols: u16,
pub pixel_width: u16,
pub pixel_height: u16,
}
impl Default for TermSize {
fn default() -> Self {
Self {
rows: 24,
cols: 80,
pixel_width: 0,
pixel_height: 0,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionMeta {
pub session_id: SessionId,
pub program: String,
pub args: Vec<String>,
pub cwd: Option<String>,
pub opened_at: DateTime<Utc>,
pub client_id: Option<String>,
pub size: TermSize,
#[serde(default)]
pub principal: Option<Principal>,
}