synd-term 0.3.2

terminal feed viewer
Documentation
use crate::{
    application::Features,
    auth::AuthenticationProvider,
    ui::components::{
        authentication::Authentication, entries::Entries, filter::Filter,
        gh_notifications::GhNotifications, status::StatusLine, subscription::Subscription,
        tabs::Tabs,
    },
};

pub(crate) mod authentication;
pub(crate) mod entries;
pub(crate) mod filter;
pub(crate) mod gh_notifications;
pub(crate) mod root;
pub(crate) mod status;
pub(crate) mod subscription;
pub(crate) mod tabs;

mod collections;

pub(crate) struct Components {
    pub tabs: Tabs,
    pub filter: Filter,
    pub prompt: StatusLine,
    pub subscription: Subscription,
    pub entries: Entries,
    pub gh_notifications: GhNotifications,
    pub auth: Authentication,
}

impl Components {
    pub fn new(features: &'_ Features) -> Self {
        Self {
            tabs: Tabs::new(features),
            filter: Filter::new(),
            prompt: StatusLine::new(),
            subscription: Subscription::new(),
            entries: Entries::new(),
            gh_notifications: GhNotifications::new(),
            auth: Authentication::new(vec![
                AuthenticationProvider::Github,
                AuthenticationProvider::Google,
            ]),
        }
    }
}