Merge branch 'develop' into activation-meta
[akkoma] / lib / pleroma / emoji / pack.ex
index 2dca21c93c346e363da7e38fe2913c79fe6f847e..d076ae3125c5318815dba7d59042862c9f1399e8 100644 (file)
@@ -32,8 +32,8 @@ defmodule Pleroma.Emoji.Pack do
 
   defp paginate(entities, page, page_size) do
     entities
-    |> Enum.take(page * page_size)
-    |> Enum.take(-page_size)
+    |> Enum.chunk_every(page_size)
+    |> Enum.at(page - 1)
   end
 
   @spec show(keyword()) :: {:ok, t()} | {:error, atom()}
@@ -45,6 +45,7 @@ defmodule Pleroma.Emoji.Pack do
       shortcodes =
         pack.files
         |> Map.keys()
+        |> Enum.sort()
         |> paginate(opts[:page], opts[:page_size])
 
       pack = Map.put(pack, :files, Map.take(pack.files, shortcodes))
@@ -470,7 +471,7 @@ defmodule Pleroma.Emoji.Pack do
     # with the API so it should be sufficient
     with {:create_dir, :ok} <- {:create_dir, File.mkdir_p(emoji_path)},
          {:ls, {:ok, results}} <- {:ls, File.ls(emoji_path)} do
-      {:ok, results}
+      {:ok, Enum.sort(results)}
     else
       {:create_dir, {:error, e}} -> {:error, :create_dir, e}
       {:ls, {:error, e}} -> {:error, :ls, e}