mod cli;
mod errors;
use api::JellyfinConfig;
use errors::*;

fn main() -> Result<()> {
    color_backtrace::install();
    let args = <cli::Cli as clap::Parser>::parse();
    tracing_subscriber::fmt()
        .with_max_level(args.verbosity)
        .with_file(true)
        .with_line_number(true)
        .init();
    ui_iced::ui().change_context(Error)?;
    Ok(())
}

// #[tokio::main]
// pub async fn main() -> Result<()> {
//     dotenvy::dotenv()
//         .change_context(Error)
//         .inspect_err(|err| {
//             eprintln!("Failed to load .env file: {}", err);
//         })
//         .ok();
//     let config = JellyfinConfig::new(
//         std::env::var("JELLYFIN_USERNAME").change_context(Error)?,
//         std::env::var("JELLYFIN_PASSWORD").change_context(Error)?,
//         std::env::var("JELLYFIN_SERVER_URL").change_context(Error)?,
//         "jello".to_string(),
//     );
//     let mut jellyfin = api::JellyfinClient::new(config);
//     jellyfin
//         .authenticate_with_cached_token(".session")
//         .await
//         .change_context(Error)?;
//
//     #[cfg(feature = "iced")]
//     ui_iced::ui(jellyfin);
//     #[cfg(feature = "gpui")]
//     ui_gpui::ui(jellyfin);
//
//     Ok(())
// }
