From 160d4e6af6d0a41f3147ddab87d93b4b22bb6571 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Wed, 18 Mar 2020 11:59:00 +0300 Subject: fix for doubled path on import --- .../pleroma_api/controllers/emoji_api_controller.ex | 20 ++++++++++++++++---- .../controllers/emoji_api_controller_test.exs | 10 ++++++++-- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex index 03e95e020..196d325e6 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex @@ -615,7 +615,7 @@ defp write_pack_json_contents(dir) do defp files_for_pack(emoji_txt_path, dir_path) do if File.exists?(emoji_txt_path) do # There's an emoji.txt file, it's likely from a pack installed by the pack manager. - # Make a pack.json file from the contents of that emoji.txt fileh + # Make a pack.json file from the contents of that emoji.txt file # FIXME: Copy-pasted from Pleroma.Emoji/load_from_file_stream/2 @@ -627,11 +627,23 @@ defp files_for_pack(emoji_txt_path, dir_path) do case String.split(line, ~r/,\s*/) do # This matches both strings with and without tags # and we don't care about tags here - [name, file | _] -> {name, file} - _ -> nil + [name, file | _] -> + file_dir_name = Path.dirname(file) + + file = + if String.ends_with?(dir_path, file_dir_name) do + Path.basename(file) + else + file + end + + {name, file} + + _ -> + nil end end) - |> Enum.filter(fn x -> not is_nil(x) end) + |> Enum.filter(& &1) |> Enum.into(%{}) else # If there's no emoji.txt, assume all files diff --git a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs index 4b9f5cf9a..3d1fa0d94 100644 --- a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs @@ -448,7 +448,12 @@ test "filesystem import" do File.rm!("#{@emoji_dir_path}/test_pack_for_import/pack.json") refute File.exists?("#{@emoji_dir_path}/test_pack_for_import/pack.json") - emoji_txt_content = "blank, blank.png, Fun\n\nblank2, blank.png" + emoji_txt_content = """ + blank, blank.png, Fun + blank2, blank.png + foo, /emoji/test_pack_for_import/blank.png + bar + """ File.write!("#{@emoji_dir_path}/test_pack_for_import/emoji.txt", emoji_txt_content) @@ -460,7 +465,8 @@ test "filesystem import" do assert resp["test_pack_for_import"]["files"] == %{ "blank" => "blank.png", - "blank2" => "blank.png" + "blank2" => "blank.png", + "foo" => "blank.png" } end end -- cgit v1.2.3