wait for our self-presence to consider the room joined
The current code was only waiting until the first presence received from the room, while our self-presence is the very last one to be received.
This commit is contained in:
parent
7fa31bd796
commit
c793d08bb6
|
@ -20,7 +20,7 @@ use xmpp_parsers::{
|
||||||
iq::{Iq, IqType},
|
iq::{Iq, IqType},
|
||||||
jingle::{Action, Jingle},
|
jingle::{Action, Jingle},
|
||||||
message::{Message, MessageType},
|
message::{Message, MessageType},
|
||||||
muc::{Muc, MucUser},
|
muc::{Muc, MucUser, user::Status as MucStatus},
|
||||||
nick::Nick,
|
nick::Nick,
|
||||||
ns,
|
ns,
|
||||||
presence::{self, Presence},
|
presence::{self, Presence},
|
||||||
|
@ -483,10 +483,13 @@ impl StanzaFilter for JitsiConference {
|
||||||
},
|
},
|
||||||
JoiningMuc => {
|
JoiningMuc => {
|
||||||
let presence = Presence::try_from(element)?;
|
let presence = Presence::try_from(element)?;
|
||||||
if BareJid::from(presence.from.as_ref().unwrap().clone()) == self.config.muc {
|
if let Some(payload) = presence.payloads.iter().find(|payload| payload.is("x", ns::MUC_USER)) {
|
||||||
|
let muc_user = MucUser::try_from(payload.clone())?;
|
||||||
|
if muc_user.status.contains(&MucStatus::SelfPresence) {
|
||||||
debug!("Joined MUC: {}", self.config.muc);
|
debug!("Joined MUC: {}", self.config.muc);
|
||||||
self.inner.lock().await.state = Idle;
|
self.inner.lock().await.state = Idle;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
Idle => {
|
Idle => {
|
||||||
if let Ok(iq) = Iq::try_from(element.clone()) {
|
if let Ok(iq) = Iq::try_from(element.clone()) {
|
||||||
|
|
Loading…
Reference in New Issue