use std::{path::Path, str::FromStr, time::Duration}; use jid::JID; use lampada::{db::Db, CoreClientCommand, LuzHandle}; use sqlx::SqlitePool; use tokio::{ io::{AsyncReadExt, AsyncWriteExt}, sync::oneshot, }; use tracing::info; #[tokio::main] async fn main() { tracing_subscriber::fmt::init(); let db = Db::create_connect_and_migrate(Path::new("./luz.db")) .await .unwrap(); let (luz, mut recv) = LuzHandle::new("test@blos.sm".try_into().unwrap(), "slayed".to_string(), db); tokio::spawn(async move { while let Some(msg) = recv.recv().await { info!("{:#?}", msg) } }); luz.send(CoreClientCommand::Connect).await.unwrap(); let (send, recv) = oneshot::channel(); tokio::time::sleep(Duration::from_secs(5)).await; info!("sending message"); luz.send(CoreClientCommand::SendMessage( JID::from_str("cel@blos.sm").unwrap(), luz::chat::Body { body: "hallo!!!".to_string(), }, send, )) .await .unwrap(); recv.await.unwrap().unwrap(); println!("sent message"); }