From: Paweł Chmielowski Date: Mon, 29 Apr 2019 14:31:37 +0000 (+0200) Subject: Return correct value from count_offline_messages with mam storage option X-Git-Tag: 19.05~64 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=faf9b20ac00d361584f6fe2d33562d6f3ff70683;p=ejabberd Return correct value from count_offline_messages with mam storage option --- diff --git a/src/mod_offline.erl b/src/mod_offline.erl index 4bacf1e90..94a64d83a 100644 --- a/src/mod_offline.erl +++ b/src/mod_offline.erl @@ -733,6 +733,8 @@ read_db_messages(LUser, LServer) -> end end, Mod:read_message_headers(LUser, LServer)). +-spec read_mam_messages(binary(), binary(), [#offline_msg{} | {any(), message()}]) -> + [{integer(), message()}]. read_mam_messages(LUser, LServer, ReadMsgs) -> {Timestamp, ExtraMsgs} = lists:foldl( fun({_Node, #message{id = <<"ActivityMarker">>, @@ -984,8 +986,14 @@ webadmin_user_parse_query(Acc, _Action, _User, _Server, count_offline_messages(User, Server) -> LUser = jid:nodeprep(User), LServer = jid:nameprep(Server), - Mod = gen_mod:db_mod(LServer, ?MODULE), - Mod:count_messages(LUser, LServer). + case use_mam_for_user(User, Server) of + true -> + Res = read_db_messages(LUser, LServer), + length(read_mam_messages(LUser, LServer, Res)); + _ -> + Mod = gen_mod:db_mod(LServer, ?MODULE), + Mod:count_messages(LUser, LServer) + end. -spec add_delay_info(message(), binary(), undefined | erlang:timestamp()) -> message().