summaryrefslogtreecommitdiff
path: root/src/mod_muc_room.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2022-07-01 09:13:37 +0300
committerAlexey Shchepin <alexey@process-one.net>2022-07-01 09:39:37 +0300
commit99d9e315a3c0524d84197e63741790d5893c51f4 (patch)
treede172c82f2910d6e27f4a9bca633a95c5174a3c5 /src/mod_muc_room.erl
parentmod_mix_pam: Display joined channels on webadmin page (diff)
Don't set affiliation to 'none' if it's already 'none' in mod_muc_room:process_item_change/3
Diffstat (limited to '')
-rw-r--r--src/mod_muc_room.erl36
1 files changed, 20 insertions, 16 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index dda31aeb..d2eb80cc 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -3014,22 +3014,26 @@ process_item_change(Item, SD, UJID) ->
send_kickban_presence(UJID, JID, Reason, 307, SD),
set_role(JID, none, SD);
{JID, affiliation, none, Reason} ->
- case (SD#state.config)#config.members_only of
- true ->
- send_kickban_presence(UJID, JID, Reason, 321, none, SD),
- maybe_send_affiliation(JID, none, SD),
- SD1 = set_affiliation(JID, none, SD),
- set_role(JID, none, SD1);
- _ ->
- SD1 = set_affiliation(JID, none, SD),
- SD2 = case (SD1#state.config)#config.moderated of
- true -> set_role(JID, visitor, SD1);
- false -> set_role(JID, participant, SD1)
- end,
- send_update_presence(JID, Reason, SD2, SD),
- maybe_send_affiliation(JID, none, SD2),
- SD2
- end;
+ case get_affiliation(JID, SD) of
+ none -> SD;
+ _ ->
+ case (SD#state.config)#config.members_only of
+ true ->
+ send_kickban_presence(UJID, JID, Reason, 321, none, SD),
+ maybe_send_affiliation(JID, none, SD),
+ SD1 = set_affiliation(JID, none, SD),
+ set_role(JID, none, SD1);
+ _ ->
+ SD1 = set_affiliation(JID, none, SD),
+ SD2 = case (SD1#state.config)#config.moderated of
+ true -> set_role(JID, visitor, SD1);
+ false -> set_role(JID, participant, SD1)
+ end,
+ send_update_presence(JID, Reason, SD2, SD),
+ maybe_send_affiliation(JID, none, SD2),
+ SD2
+ end
+ end;
{JID, affiliation, outcast, Reason} ->
send_kickban_presence(UJID, JID, Reason, 301, outcast, SD),
maybe_send_affiliation(JID, outcast, SD),