aboutsummaryrefslogtreecommitdiff
path: root/src/mod_mam.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-09 17:02:17 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-09 17:02:17 +0300
commit1e55e018e534aa82541c5f460063a237192b768c (patch)
tree9584ed46fe2b18770343399254b0ba15ff591e51 /src/mod_mam.erl
parentGet rid of "jlib.hrl" header in some files (diff)
Adopt remaining code to support new hooks
Diffstat (limited to 'src/mod_mam.erl')
-rw-r--r--src/mod_mam.erl88
1 files changed, 46 insertions, 42 deletions
diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index edb0d1485..0e2d77d96 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -33,10 +33,10 @@
%% API
-export([start/2, stop/1, depends/2]).
--export([user_send_packet/4, user_send_packet_strip_tag/4, user_receive_packet/5,
+-export([user_send_packet/1, user_send_packet_strip_tag/1, user_receive_packet/1,
process_iq_v0_2/1, process_iq_v0_3/1, disco_sm_features/5,
remove_user/2, remove_room/3, mod_opt_type/1, muc_process_iq/2,
- muc_filter_message/5, message_is_archived/5, delete_old_messages/2,
+ muc_filter_message/5, message_is_archived/3, delete_old_messages/2,
get_commands_spec/0, msg_to_el/4, get_room_config/4, set_room_option/3]).
-include("xmpp.hrl").
@@ -200,46 +200,50 @@ set_room_option(_Acc, {mam, Val}, _Lang) ->
set_room_option(Acc, _Property, _Lang) ->
Acc.
--spec user_receive_packet(stanza(), ejabberd_c2s:state(), jid(), jid(), jid()) -> stanza().
-user_receive_packet(Pkt, C2SState, JID, Peer, _To) ->
+-spec user_receive_packet({stanza(), ejabberd_c2s:state()}) -> {stanza(), ejabberd_c2s:state()}.
+user_receive_packet({Pkt, #{jid := JID} = C2SState}) ->
+ Peer = xmpp:get_from(Pkt),
LUser = JID#jid.luser,
LServer = JID#jid.lserver,
- case should_archive(Pkt, LServer) of
- true ->
- NewPkt = strip_my_archived_tag(Pkt, LServer),
- case store_msg(C2SState, NewPkt, LUser, LServer, Peer, recv) of
- {ok, ID} ->
- set_stanza_id(NewPkt, JID, ID);
- _ ->
- NewPkt
- end;
- _ ->
- Pkt
- end.
-
--spec user_send_packet(stanza(), ejabberd_c2s:state(), jid(), jid()) -> stanza().
-user_send_packet(Pkt, C2SState, JID, Peer) ->
+ Pkt2 = case should_archive(Pkt, LServer) of
+ true ->
+ Pkt1 = strip_my_archived_tag(Pkt, LServer),
+ case store_msg(C2SState, Pkt1, LUser, LServer, Peer, recv) of
+ {ok, ID} ->
+ set_stanza_id(Pkt1, JID, ID);
+ _ ->
+ Pkt1
+ end;
+ _ ->
+ Pkt
+ end,
+ {Pkt2, C2SState}.
+
+-spec user_send_packet({stanza(), ejabberd_c2s:state()}) -> {stanza(), ejabberd_c2s:state()}.
+user_send_packet({Pkt, #{jid := JID} = C2SState}) ->
+ Peer = xmpp:get_to(Pkt),
LUser = JID#jid.luser,
LServer = JID#jid.lserver,
- case should_archive(Pkt, LServer) of
- true ->
- NewPkt = strip_my_archived_tag(Pkt, LServer),
- case store_msg(C2SState, xmpp:set_from_to(NewPkt, JID, Peer),
- LUser, LServer, Peer, send) of
- {ok, ID} ->
- set_stanza_id(NewPkt, JID, ID);
- _ ->
- NewPkt
- end;
- false ->
- Pkt
- end.
-
--spec user_send_packet_strip_tag(stanza(), ejabberd_c2s:state(),
- jid(), jid()) -> stanza().
-user_send_packet_strip_tag(Pkt, _C2SState, JID, _Peer) ->
+ Pkt2 = case should_archive(Pkt, LServer) of
+ true ->
+ Pkt1 = strip_my_archived_tag(Pkt, LServer),
+ case store_msg(C2SState, xmpp:set_from_to(Pkt1, JID, Peer),
+ LUser, LServer, Peer, send) of
+ {ok, ID} ->
+ set_stanza_id(Pkt1, JID, ID);
+ _ ->
+ Pkt1
+ end;
+ false ->
+ Pkt
+ end,
+ {Pkt2, C2SState}.
+
+-spec user_send_packet_strip_tag({stanza(), ejabberd_c2s:state()}) ->
+ {stanza(), ejabberd_c2s:state()}.
+user_send_packet_strip_tag({Pkt, #{jid := JID} = C2SState}) ->
LServer = JID#jid.lserver,
- strip_my_archived_tag(Pkt, LServer).
+ {strip_my_archived_tag(Pkt, LServer), C2SState}.
-spec muc_filter_message(message(), mod_muc_room:state(),
jid(), jid(), binary()) -> message().
@@ -338,12 +342,12 @@ disco_sm_features({result, OtherFeatures},
disco_sm_features(Acc, _From, _To, _Node, _Lang) ->
Acc.
--spec message_is_archived(boolean(), ejabberd_c2s:state(),
- jid(), jid(), message()) -> boolean().
-message_is_archived(true, _C2SState, _Peer, _JID, _Pkt) ->
+-spec message_is_archived(boolean(), ejabberd_c2s:state(), message()) -> boolean().
+message_is_archived(true, _C2SState, _Pkt) ->
true;
-message_is_archived(false, C2SState, Peer,
- #jid{luser = LUser, lserver = LServer}, Pkt) ->
+message_is_archived(false, #{jid := JID} = C2SState, Pkt) ->
+ #jid{luser = LUser, lserver = LServer} = JID,
+ Peer = xmpp:get_from(Pkt),
case gen_mod:get_module_opt(LServer, ?MODULE, assume_mam_usage,
fun(B) when is_boolean(B) -> B end, false) of
true ->