fix for packs pagination

This commit is contained in:
Alexander Strizhakov 2020-06-20 10:56:28 +03:00
parent 02ca8a363f
commit 1a704e1f1e
No known key found for this signature in database
GPG Key ID: 022896A53AEF1381
2 changed files with 20 additions and 6 deletions

View File

@ -32,8 +32,8 @@ defmodule Pleroma.Emoji.Pack do
defp paginate(entities, page, page_size) do defp paginate(entities, page, page_size) do
entities entities
|> Enum.take(page * page_size) |> Enum.chunk_every(page_size)
|> Enum.take(-page_size) |> Enum.at(page - 1)
end end
@spec show(keyword()) :: {:ok, t()} | {:error, atom()} @spec show(keyword()) :: {:ok, t()} | {:error, atom()}
@ -470,7 +470,7 @@ defmodule Pleroma.Emoji.Pack do
# with the API so it should be sufficient # with the API so it should be sufficient
with {:create_dir, :ok} <- {:create_dir, File.mkdir_p(emoji_path)}, with {:create_dir, :ok} <- {:create_dir, File.mkdir_p(emoji_path)},
{:ls, {:ok, results}} <- {:ls, File.ls(emoji_path)} do {:ls, {:ok, results}} <- {:ls, File.ls(emoji_path)} do
{:ok, results} {:ok, Enum.sort(results)}
else else
{:create_dir, {:error, e}} -> {:error, :create_dir, e} {:create_dir, {:error, e}} -> {:error, :create_dir, e}
{:ls, {:error, e}} -> {:error, :ls, e} {:ls, {:error, e}} -> {:error, :ls, e}

View File

@ -31,6 +31,11 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do
resp = conn |> get("/api/pleroma/emoji/packs") |> json_response_and_validate_schema(200) resp = conn |> get("/api/pleroma/emoji/packs") |> json_response_and_validate_schema(200)
assert resp["count"] == 3 assert resp["count"] == 3
assert resp["packs"]
|> Map.keys()
|> length() == 3
shared = resp["packs"]["test_pack"] shared = resp["packs"]["test_pack"]
assert shared["files"] == %{"blank" => "blank.png", "blank2" => "blank2.png"} assert shared["files"] == %{"blank" => "blank.png", "blank2" => "blank2.png"}
assert Map.has_key?(shared["pack"], "download-sha256") assert Map.has_key?(shared["pack"], "download-sha256")
@ -47,7 +52,12 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do
|> json_response_and_validate_schema(200) |> json_response_and_validate_schema(200)
assert resp["count"] == 3 assert resp["count"] == 3
[pack1] = Map.keys(resp["packs"])
packs = Map.keys(resp["packs"])
assert length(packs) == 1
[pack1] = packs
resp = resp =
conn conn
@ -55,7 +65,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do
|> json_response_and_validate_schema(200) |> json_response_and_validate_schema(200)
assert resp["count"] == 3 assert resp["count"] == 3
[pack2] = Map.keys(resp["packs"]) packs = Map.keys(resp["packs"])
assert length(packs) == 1
[pack2] = packs
resp = resp =
conn conn
@ -63,7 +75,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do
|> json_response_and_validate_schema(200) |> json_response_and_validate_schema(200)
assert resp["count"] == 3 assert resp["count"] == 3
[pack3] = Map.keys(resp["packs"]) packs = Map.keys(resp["packs"])
assert length(packs) == 1
[pack3] = packs
assert [pack1, pack2, pack3] |> Enum.uniq() |> length() == 3 assert [pack1, pack2, pack3] |> Enum.uniq() |> length() == 3
end end