commit: 7b87cac6cc02af82813676faf3dae22c70c288c6
parent 9983799ccb19585ad8ed0de2546d71090b094277
Author: Alex Gleason <alex@alexgleason.me>
Date:   Sun, 23 Jan 2022 15:23:56 +0000
Merge branch 'preserve-mentions-order' into 'develop'
Preserve order of mentioned users
See merge request pleroma/pleroma!3617
Diffstat:
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
@@ -2279,6 +2279,7 @@ defmodule Pleroma.User do
   def get_ap_ids_by_nicknames(nicknames) do
     from(u in User,
       where: u.nickname in ^nicknames,
+      order_by: fragment("array_position(?, ?)", ^nicknames, u.nickname),
       select: u.ap_id
     )
     |> Repo.all()
diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs
@@ -2084,6 +2084,17 @@ defmodule Pleroma.UserTest do
       assert user.ap_id in ap_ids
       assert user_two.ap_id in ap_ids
     end
+
+    test "it returns a list of AP ids in the same order" do
+      user = insert(:user)
+      user_two = insert(:user)
+      user_three = insert(:user)
+
+      ap_ids =
+        User.get_ap_ids_by_nicknames([user.nickname, user_three.nickname, user_two.nickname])
+
+      assert [user.ap_id, user_three.ap_id, user_two.ap_id] == ap_ids
+    end
   end
 
   describe "sync followers count" do