Set subscribers nicks when recreating room (thanks to Girdhar Sojitra)(#1495)

This commit is contained in:
Badlop 2017-01-31 19:18:19 +01:00
parent b2a2e0f135
commit a31154c035
1 changed files with 14 additions and 11 deletions

View File

@ -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};