diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2016-01-14 01:13:16 +0100 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2016-01-14 01:13:16 +0100 |
commit | 89f63a4fdfbf5e240060e63b11fb2722e4cebe22 (patch) | |
tree | 7491d1d4404680a14c768a37b60a4b4a436909fd /src/mod_mam.erl | |
parent | mod_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.erl | 29 |
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), |