ait 0.6.0

AIT is a terminal based chat interface for interacting with large language models from various providers.
Documentation
use ratatui::widgets::ListState;

#[derive(Debug)]
pub struct ChatList {
    pub items: Vec<ChatItem>,
    pub state: ListState,
}

#[derive(Debug)]
pub struct ChatItem {
    pub chat_id: i64,
    pub started_at: String,
    pub selected: bool,
}

impl FromIterator<(i64, String, bool)> for ChatList {
    fn from_iter<I: IntoIterator<Item = (i64, String, bool)>>(iter: I) -> Self {
        let items = iter
            .into_iter()
            .map(|(id, started_at, selected)| ChatItem::new(id, started_at, selected))
            .collect();
        let mut state = ListState::default();
        state.select_first();
        Self { items, state }
    }
}

impl ChatItem {
    pub fn new(chat_id: i64, started_at: String, selected: bool) -> Self {
        Self {
            chat_id,
            started_at,
            selected,
        }
    }
}