1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-11-10 18:15:58 +01:00

Remove unexpected MucNotJoinedException from MultiUserChat.leave()

Occupant information should be reset after `leavePresence`
and `reflectedLeavePresenceFilter` are built.
This commit is contained in:
adiaholic 2020-04-17 20:10:45 +05:30
parent 0f7b7df1f0
commit 22cff274bb

View file

@ -732,10 +732,6 @@ public class MultiUserChat {
// "if (!joined) return" because it should be always be possible to leave the room in case the instance's // "if (!joined) return" because it should be always be possible to leave the room in case the instance's
// state does not reflect the actual state. // state does not reflect the actual state.
// Reset occupant information first so that we are assume that we left the room even if sendStanza() would
// throw.
userHasLeft();
final EntityFullJid myRoomJid = this.myRoomJid; final EntityFullJid myRoomJid = this.myRoomJid;
if (myRoomJid == null) { if (myRoomJid == null) {
throw new MucNotJoinedException(this); throw new MucNotJoinedException(this);
@ -757,6 +753,10 @@ public class MultiUserChat {
) )
); );
// Reset occupant information first so that we are assume that we left the room even if sendStanza() would
// throw.
userHasLeft();
Presence reflectedLeavePresence = connection.createStanzaCollectorAndSend(reflectedLeavePresenceFilter, leavePresence).nextResultOrThrow(); Presence reflectedLeavePresence = connection.createStanzaCollectorAndSend(reflectedLeavePresenceFilter, leavePresence).nextResultOrThrow();
return reflectedLeavePresence; return reflectedLeavePresence;