diff options
author | Badlop <badlop@process-one.net> | 2010-04-27 14:33:38 +0400 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2010-04-27 14:33:38 +0400 |
commit | 9820880cd5d93fd38ad347b7fc5e370711d6f7cf (patch) | |
tree | bed73fd1ce591aced7e1f32d0d32339f9adcf1e4 /src/ejabberd_c2s.erl | |
parent | 8713465df1dcbaf20a78a017c4493ffe42bfb151 (diff) |
Automatic vcard avatar addition in presence (thanks to Igor Goryachev)(EJAB-208)
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r-- | src/ejabberd_c2s.erl | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 41206fffc..2e5007c69 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -1287,6 +1287,25 @@ handle_info(system_shutdown, StateName, StateData) -> ok end, {stop, normal, StateData}; +handle_info({force_update_presence, LUser}, StateName, + #state{user = LUser, server = LServer} = StateData) -> + NewStateData = + case exmpp_presence:is_presence(StateData#state.pres_last) of + true -> + PresenceEl = ejabberd_hooks:run_fold( + c2s_update_presence, + LServer, + StateData#state.pres_last, + [LUser, LServer]), + StateData2 = StateData#state{pres_last = PresenceEl}, + presence_update(StateData2#state.jid, + PresenceEl, + StateData2), + StateData2; + false -> + StateData + end, + {next_state, StateName, NewStateData}; handle_info(Info, StateName, StateData) -> ?ERROR_MSG("Unexpected info: ~p", [Info]), fsm_next_state(StateName, StateData). |