mod ui; mod accounts; mod app; use crate::ui::UI; use matrix_sdk::ruma::exports::serde_json; use tokio::time::{sleep, Duration}; use std::{io, thread}; use log::{error, warn, info, LevelFilter}; use log4rs::append::file::FileAppender; use log4rs::encode::pattern::PatternEncoder; use log4rs::config::{Appender, Config, Root}; #[tokio::main] async fn main() -> anyhow::Result<()> { let logfile = FileAppender::builder() .encoder(Box::new(PatternEncoder::new("{l} - {m}\n"))) .build("userdata/output.log")?; let config = Config::builder() .appender(Appender::builder().build("logfile", Box::new(logfile))) .build(Root::builder() .appender("logfile") .build(LevelFilter::Info))?; log4rs::init_config(config)?; let mut app = app::App::new(); app.fill_test_data(); let mut ui = UI::new(); if app.accounts_manager.num_accounts() == 0 { info!("No saved sessions found -> jumping into setup"); ui.setup(&mut app).await?; } ui.main(&mut app).await?; Ok(()) }