summaryrefslogtreecommitdiff
path: root/src/mod_mam.erl
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2016-01-14 01:13:16 +0100
committerHolger Weiss <holger@zedat.fu-berlin.de>2016-01-14 01:13:16 +0100
commit89f63a4fdfbf5e240060e63b11fb2722e4cebe22 (patch)
tree7491d1d4404680a14c768a37b60a4b4a436909fd /src/mod_mam.erl
parentmod_mam: Support XEP-0313 v0.2 MUC archive queries (diff)
mod_mam: Check whether MUC message is desired
Diffstat (limited to 'src/mod_mam.erl')
-rw-r--r--src/mod_mam.erl29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index 31fa7977..3be7312a 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -579,9 +579,30 @@ should_archive_peer(C2SState,
end
end.
-should_archive_muc(_MUCState, _Peer) ->
- %% TODO
- true.
+should_archive_muc(Pkt) ->
+ case xml:get_attr_s(<<"type">>, Pkt#xmlel.attrs) of
+ <<"groupchat">> ->
+ case check_store_hint(Pkt) of
+ store ->
+ true;
+ no_store ->
+ false;
+ none ->
+ case xml:get_subtag_cdata(Pkt, <<"body">>) of
+ <<>> ->
+ case xml:get_subtag_cdata(Pkt, <<"subject">>) of
+ <<>> ->
+ false;
+ _ ->
+ true
+ end;
+ _ ->
+ true
+ end
+ end;
+ _ ->
+ false
+ end.
check_store_hint(Pkt) ->
case has_store_hint(Pkt) of
@@ -635,7 +656,7 @@ store_msg(C2SState, Pkt, LUser, LServer, Peer, Dir) ->
end.
store_muc(MUCState, Pkt, RoomJID, Peer, Nick) ->
- case should_archive_muc(MUCState, Peer) of
+ case should_archive_muc(Pkt) of
true ->
LServer = MUCState#state.server_host,
{U, S, _} = jid:tolower(RoomJID),