mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-02 21:17:12 +02:00
Add hooks for tracking mucsub subscriptions changes
This commit is contained in:
parent
009b9a1fd0
commit
c96a925fde
|
@ -1688,7 +1688,8 @@ update_online_user(JID, #user{nick = Nick} = User, StateData) ->
|
||||||
end,
|
end,
|
||||||
NewStateData.
|
NewStateData.
|
||||||
|
|
||||||
set_subscriber(JID, Nick, Nodes, StateData) ->
|
set_subscriber(JID, Nick, Nodes,
|
||||||
|
#state{room = Room, host = Host, server_host = ServerHost} = StateData) ->
|
||||||
BareJID = case JID of
|
BareJID = case JID of
|
||||||
#jid{} -> jid:remove_resource(JID);
|
#jid{} -> jid:remove_resource(JID);
|
||||||
_ ->
|
_ ->
|
||||||
|
@ -1707,7 +1708,8 @@ set_subscriber(JID, Nick, Nodes, StateData) ->
|
||||||
store_room(NewStateData, [{add_subscription, BareJID, Nick, Nodes}]),
|
store_room(NewStateData, [{add_subscription, BareJID, Nick, Nodes}]),
|
||||||
case not maps:is_key(LBareJID, StateData#state.subscribers) of
|
case not maps:is_key(LBareJID, StateData#state.subscribers) of
|
||||||
true ->
|
true ->
|
||||||
send_subscriptions_change_notifications(BareJID, Nick, subscribe, NewStateData);
|
send_subscriptions_change_notifications(BareJID, Nick, subscribe, NewStateData),
|
||||||
|
ejabberd_hooks:run(muc_subscribed, ServerHost, [ServerHost, Room, Host, BareJID]);
|
||||||
_ ->
|
_ ->
|
||||||
ok
|
ok
|
||||||
end,
|
end,
|
||||||
|
@ -4056,7 +4058,7 @@ process_iq_mucsub(From, #iq{type = set, lang = Lang,
|
||||||
{error, xmpp:err_forbidden(Txt, Lang)}
|
{error, xmpp:err_forbidden(Txt, Lang)}
|
||||||
end;
|
end;
|
||||||
process_iq_mucsub(From, #iq{type = set, sub_els = [#muc_unsubscribe{}]},
|
process_iq_mucsub(From, #iq{type = set, sub_els = [#muc_unsubscribe{}]},
|
||||||
StateData) ->
|
#state{room = Room, host = Host, server_host = ServerHost} = StateData) ->
|
||||||
BareJID = jid:remove_resource(From),
|
BareJID = jid:remove_resource(From),
|
||||||
LBareJID = jid:tolower(BareJID),
|
LBareJID = jid:tolower(BareJID),
|
||||||
try maps:get(LBareJID, StateData#state.subscribers) of
|
try maps:get(LBareJID, StateData#state.subscribers) of
|
||||||
|
@ -4067,6 +4069,7 @@ process_iq_mucsub(From, #iq{type = set, sub_els = [#muc_unsubscribe{}]},
|
||||||
subscriber_nicks = Nicks},
|
subscriber_nicks = Nicks},
|
||||||
store_room(NewStateData, [{del_subscription, LBareJID}]),
|
store_room(NewStateData, [{del_subscription, LBareJID}]),
|
||||||
send_subscriptions_change_notifications(BareJID, Nick, unsubscribe, StateData),
|
send_subscriptions_change_notifications(BareJID, Nick, unsubscribe, StateData),
|
||||||
|
ejabberd_hooks:run(muc_unsubscribed, ServerHost, [ServerHost, Room, Host, BareJID]),
|
||||||
NewStateData2 = case close_room_if_temporary_and_empty(NewStateData) of
|
NewStateData2 = case close_room_if_temporary_and_empty(NewStateData) of
|
||||||
{stop, normal, _} -> stop;
|
{stop, normal, _} -> stop;
|
||||||
{next_state, normal_state, SD} -> SD
|
{next_state, normal_state, SD} -> SD
|
||||||
|
|
Loading…
Reference in New Issue
Block a user