diff options
author | Badlop <badlop@process-one.net> | 2017-01-31 19:18:19 +0100 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2017-01-31 19:18:39 +0100 |
commit | a31154c0356f430dcd7b3c7371a864d8ec035cf8 (patch) | |
tree | 4bd8860f7235d9b7838f3a88732028e271a10bc1 /src/mod_muc_room.erl | |
parent | Support 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.erl | 25 |
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}; |