summaryrefslogtreecommitdiff
path: root/src/mod_muc_room.erl
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2018-08-10 17:46:47 +0200
committerBadlop <badlop@process-one.net>2018-08-13 12:52:33 +0200
commit8f0e066135c72b2ee100e5ba5292718183e2738d (patch)
tree4f02a3d9ced7d36e2b0a57640153271a1be187fb /src/mod_muc_room.erl
parentRemove 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.erl15
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)}