]> granicus.if.org Git - ejabberd/commitdiff
Fix deletion of multiple offline messages using WebAdmin (#1962)
authorBadlop <badlop@process-one.net>
Fri, 25 Aug 2017 10:44:53 +0000 (12:44 +0200)
committerBadlop <badlop@process-one.net>
Fri, 25 Aug 2017 10:44:53 +0000 (12:44 +0200)
src/mod_offline.erl

index 0be61f71f298353edbc16ac7368e5e8394ff9b6e..5b95fe4b47ab8f30ad576fd02b28603140a31791 100644 (file)
@@ -706,22 +706,25 @@ user_queue_parse_query(LUser, LServer, Query) ->
     Mod = gen_mod:db_mod(LServer, ?MODULE),
     case lists:keysearch(<<"delete">>, 1, Query) of
        {value, _} ->
-           case lists:keyfind(<<"selected">>, 1, Query) of
-               {_, Seq} ->
-                   case catch binary_to_integer(Seq) of
-                       I when is_integer(I), I>=0 ->
-                           Mod:remove_message(LUser, LServer, I),
-                           ok;
-                       _ ->
-                           nothing
-                   end;
-               false ->
-                   nothing
-           end;
+           user_queue_parse_query(LUser, LServer, Query, Mod);
        _ ->
            nothing
     end.
 
+user_queue_parse_query(LUser, LServer, Query, Mod) ->
+    case lists:keytake(<<"selected">>, 1, Query) of
+       {value, {_, Seq}, Query2} ->
+           case catch binary_to_integer(Seq) of
+               I when is_integer(I), I>=0 ->
+                   Mod:remove_message(LUser, LServer, I);
+               _ ->
+                   nothing
+           end,
+           user_queue_parse_query(LUser, LServer, Query2, Mod);
+       false ->
+           nothing
+    end.
+
 us_to_list({User, Server}) ->
     jid:encode({User, Server, <<"">>}).