mirror of
https://github.com/processone/ejabberd.git
synced 2024-10-03 14:45:16 +02:00
Allow roster change from external component (TECH-1001)
This commit is contained in:
parent
3aaebe98f4
commit
2d1c416daf
@ -42,6 +42,9 @@
|
|||||||
get_presence/1,
|
get_presence/1,
|
||||||
get_subscribed/1]).
|
get_subscribed/1]).
|
||||||
|
|
||||||
|
%% API:
|
||||||
|
-export([add_rosteritem/3, del_rosteritem/2]).
|
||||||
|
|
||||||
%% gen_fsm callbacks
|
%% gen_fsm callbacks
|
||||||
-export([init/1,
|
-export([init/1,
|
||||||
wait_for_stream/2,
|
wait_for_stream/2,
|
||||||
@ -127,6 +130,12 @@ socket_type() ->
|
|||||||
get_presence(FsmRef) ->
|
get_presence(FsmRef) ->
|
||||||
?GEN_FSM:sync_send_all_state_event(FsmRef, {get_presence}, 1000).
|
?GEN_FSM:sync_send_all_state_event(FsmRef, {get_presence}, 1000).
|
||||||
|
|
||||||
|
add_rosteritem(FsmRef, IJID, ISubscription) ->
|
||||||
|
?GEN_FSM:send_all_state_event(FsmRef, {add_rosteritem, IJID, ISubscription}).
|
||||||
|
|
||||||
|
del_rosteritem(FsmRef, IJID) ->
|
||||||
|
?GEN_FSM:send_all_state_event(FsmRef, {del_rosteritem, IJID}).
|
||||||
|
|
||||||
stop(FsmRef) ->
|
stop(FsmRef) ->
|
||||||
?GEN_FSM:send_event(FsmRef, closed).
|
?GEN_FSM:send_event(FsmRef, closed).
|
||||||
|
|
||||||
@ -1066,6 +1075,15 @@ session_established2(El, StateData) ->
|
|||||||
%%----------------------------------------------------------------------
|
%%----------------------------------------------------------------------
|
||||||
handle_event({migrate, Node, After}, StateName, StateData) when Node /= node() ->
|
handle_event({migrate, Node, After}, StateName, StateData) when Node /= node() ->
|
||||||
fsm_migrate(StateName, StateData, Node, After * 2);
|
fsm_migrate(StateName, StateData, Node, After * 2);
|
||||||
|
|
||||||
|
handle_event({add_rosteritem, IJID, ISubscription}, StateName, StateData) ->
|
||||||
|
NewStateData = roster_change(IJID, ISubscription, StateData),
|
||||||
|
fsm_next_state(StateName, NewStateData);
|
||||||
|
|
||||||
|
handle_event({del_rosteritem, IJID}, StateName, StateData) ->
|
||||||
|
NewStateData = roster_change(IJID, none, StateData),
|
||||||
|
fsm_next_state(StateName, NewStateData);
|
||||||
|
|
||||||
handle_event(_Event, StateName, StateData) ->
|
handle_event(_Event, StateName, StateData) ->
|
||||||
fsm_next_state(StateName, StateData).
|
fsm_next_state(StateName, StateData).
|
||||||
|
|
||||||
@ -1978,7 +1996,8 @@ roster_change(IJID, ISubscription, StateData) ->
|
|||||||
P ->
|
P ->
|
||||||
?DEBUG("roster changed for ~p~n", [StateData#state.user]),
|
?DEBUG("roster changed for ~p~n", [StateData#state.user]),
|
||||||
From = StateData#state.jid,
|
From = StateData#state.jid,
|
||||||
To = jlib:make_jid(IJID),
|
% To = jlib:make_jid(IJID)
|
||||||
|
To = IJID,
|
||||||
Cond1 = (not StateData#state.pres_invis) and IsFrom
|
Cond1 = (not StateData#state.pres_invis) and IsFrom
|
||||||
and (not OldIsFrom),
|
and (not OldIsFrom),
|
||||||
Cond2 = (not IsFrom) and OldIsFrom
|
Cond2 = (not IsFrom) and OldIsFrom
|
||||||
|
Loading…
Reference in New Issue
Block a user