From 50cb7735d135c7baab2e2187075f14984cf5a8ab Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Wed, 13 May 2020 22:06:15 +0200 Subject: [PATCH] [muc] Add generic callback invoked if a participant is removed Fixes SMACK-883. --- .../org/jivesoftware/smackx/muc/MultiUserChat.java | 4 ++++ .../smackx/muc/ParticipantStatusListener.java | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java index 422320bf1..40c3a85a2 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java @@ -271,6 +271,10 @@ public class MultiUserChat { for (UserStatusListener listener : userStatusListeners) { listener.removed(mucUser, presence); } + } else { + for (ParticipantStatusListener listener : participantStatusListeners) { + listener.parted(from); + } } break; default: diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/ParticipantStatusListener.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/ParticipantStatusListener.java index 3ab215d69..8a376ca36 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/ParticipantStatusListener.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/muc/ParticipantStatusListener.java @@ -50,6 +50,17 @@ public interface ParticipantStatusListener { default void left(EntityFullJid participant) { } + /** + * Called when a participant is parted for whatever reason. This callback is always invoked if a participant + * parted the room, either voluntarily or involuntarily. Prior this callback, a callback with a more specific + * reason for the removal, like {@link #left(EntityFullJid)} may be invoked. + * + * @param participant the participant that was removed from the room. + * @since 4.4 + */ + default void parted(EntityFullJid participant) { + } + /** * Called when a room participant has been kicked from the room. This means that the kicked * participant is no longer participating in the room.