summaryrefslogtreecommitdiff
path: root/src/mod_muc_room.erl
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2017-01-31 19:18:19 +0100
committerBadlop <badlop@process-one.net>2017-01-31 19:18:39 +0100
commita31154c0356f430dcd7b3c7371a864d8ec035cf8 (patch)
tree4bd8860f7235d9b7838f3a88732028e271a10bc1 /src/mod_muc_room.erl
parentSupport non-JID lines in command create_rooms_file (diff)
Set subscribers nicks when recreating room (thanks to Girdhar Sojitra)(#1495)
Diffstat (limited to 'src/mod_muc_room.erl')
-rw-r--r--src/mod_muc_room.erl25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index 40e9633b..d0384c23 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -3515,17 +3515,20 @@ set_opts([{Opt, Val} | Opts], StateData) ->
StateData#state{config =
(StateData#state.config)#config{allow_subscription = Val}};
subscribers ->
- Subscribers = lists:foldl(
- fun({JID, Nick, Nodes}, Acc) ->
- BareJID = jid:remove_resource(JID),
- ?DICT:store(
- jid:tolower(BareJID),
- #subscriber{jid = BareJID,
- nick = Nick,
- nodes = Nodes},
- Acc)
- end, ?DICT:new(), Val),
- StateData#state{subscribers = Subscribers};
+ {Subscribers, Nicks} =
+ lists:foldl(
+ fun({JID, Nick, Nodes}, {SubAcc, NickAcc}) ->
+ BareJID = jid:remove_resource(JID),
+ {?DICT:store(
+ jid:tolower(BareJID),
+ #subscriber{jid = BareJID,
+ nick = Nick,
+ nodes = Nodes},
+ SubAcc),
+ ?DICT:store(Nick, [jid:tolower(BareJID)], NickAcc)}
+ end, {?DICT:new(), ?DICT:new()}, Val),
+ StateData#state{subscribers = Subscribers,
+ subscriber_nicks = Nicks};
affiliations ->
StateData#state{affiliations = (?DICT):from_list(Val)};
subject -> StateData#state{subject = Val};