use std::str::FromStr;
use chrono::Utc;
use lampada::{Connected, SupervisorSender};
use stanza::client::{Stanza, iq::Iq};
use uuid::Uuid;
use crate::{
UpdateMessage,
chat::{Body, Message},
error::{DatabaseError, Error, IqError, MessageRecvError, PresenceError, RosterError},
presence::{Offline, Online, Presence, PresenceType, Show},
roster::Contact,
};
use super::ClientLogic;
pub async fn handle_stanza(logic: ClientLogic, stanza: Stanza, connection: Connected) {
let result = process_stanza(logic.clone(), stanza, connection).await;
match result {
Ok(u) => match u {
Some(UpdateMessage::Unsupported(stanza)) => logic.handle_unsupported(stanza).await,
_ => {
if let Some(u) = u {
logic.handle_update(u).await
}
}
},
Err(e) => logic.handle_error(e).await,
}
}
pub async fn recv_message(
logic: ClientLogic,
stanza_message: stanza::client::message::Message,
) -> Result