diff options
author | Badlop <badlop@process-one.net> | 2018-08-10 17:46:47 +0200 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2018-08-13 12:52:33 +0200 |
commit | 8f0e066135c72b2ee100e5ba5292718183e2738d (patch) | |
tree | 4f02a3d9ced7d36e2b0a57640153271a1be187fb /src/mod_muc_room.erl | |
parent | Remove num_active_users as it uses calls to last_activity mnesia table (#2448) (diff) |
In response with list of room subscriptions include also events (#2272)
Diffstat (limited to 'src/mod_muc_room.erl')
-rw-r--r-- | src/mod_muc_room.erl | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 33c58e41..88bf4f09 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -586,7 +586,12 @@ handle_sync_event({muc_unsubscribe, From}, _From, StateName, StateData) -> {reply, {error, get_error_text(Err)}, StateName, StateData} end; handle_sync_event({is_subscribed, From}, _From, StateName, StateData) -> - IsSubs = ?DICT:is_key(jid:split(From), StateData#state.subscribers), + IsSubs = case (?DICT):find(jid:split(From), StateData#state.subscribers) of + {ok, #subscriber{nodes = Nodes}} -> + {true, Nodes}; + error -> + false + end, {reply, IsSubs, StateName, StateData}; handle_sync_event(_Event, _From, StateName, StateData) -> @@ -4090,11 +4095,11 @@ process_iq_mucsub(From, #iq{type = get, lang = Lang, FAffiliation = get_affiliation(From, StateData), FRole = get_role(From, StateData), if FRole == moderator; FAffiliation == owner; FAffiliation == admin -> - JIDs = dict:fold( - fun(_, #subscriber{jid = J}, Acc) -> - [J|Acc] + Subs = dict:fold( + fun(_, #subscriber{jid = J, nodes = Nodes}, Acc) -> + [#muc_subscription{jid = J, events = Nodes}|Acc] end, [], StateData#state.subscribers), - {result, #muc_subscriptions{list = JIDs}, StateData}; + {result, #muc_subscriptions{list = Subs}, StateData}; true -> Txt = <<"Moderator privileges required">>, {error, xmpp:err_forbidden(Txt, Lang)} |