use std::str::FromStr;
use chrono::Utc;
use lampada::{Connected, SupervisorSender};
use stanza::{
client::{
Stanza,
iq::{self, Iq, IqType},
},
stanza_error::Error as StanzaError,
xep_0030::{self, info},
xep_0060::event::{Content, Event, ItemsType},
};
use tracing::{debug, error, info, warn};
use uuid::Uuid;
use crate::{
UpdateMessage, caps,
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 {
_ => {
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