Fix incorrect multiple emoji tag handling introduced in initial impl
authorEkaterina Vaartis <vaartis@cock.li>
Thu, 18 Apr 2019 18:17:52 +0000 (21:17 +0300)
committerEkaterina Vaartis <vaartis@cock.li>
Sat, 20 Apr 2019 08:17:17 +0000 (11:17 +0300)
lib/pleroma/emoji.ex
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/twitter_api/controllers/util_controller.ex
test/emoji_test.exs

index 9a23bd81b3548ff35bc942118ea1b0bd107c23f6..15455b77984144a751d8111be8aedf4ce7fae8df 100644 (file)
@@ -147,8 +147,7 @@ defmodule Pleroma.Emoji do
       |> Enum.map(fn {shortcode, rel_file} ->
         filename = Path.join(common_pack_path, rel_file)
 
-        # If no tag matches, use the pack name as a tag
-        {shortcode, filename, to_string(match_extra(@groups, filename))}
+        {shortcode, filename, [to_string(match_extra(@groups, filename))]}
       end)
     end
   end
@@ -190,11 +189,11 @@ defmodule Pleroma.Emoji do
     |> Stream.map(&String.trim/1)
     |> Stream.map(fn line ->
       case String.split(line, ~r/,\s*/) do
-        [name, file, tags] ->
-          {name, file, tags}
-
         [name, file] ->
-          {name, file, to_string(match_extra(@groups, file))}
+          {name, file, [to_string(match_extra(@groups, file))]}
+
+        [name, file | tags] ->
+          {name, file, tags}
 
         _ ->
           nil
@@ -217,7 +216,7 @@ defmodule Pleroma.Emoji do
       tag = match_extra(@groups, Path.join("/", Path.relative_to(path, static_path)))
       shortcode = Path.basename(path, Path.extname(path))
       external_path = Path.join("/", Path.relative_to(path, static_path))
-      {shortcode, external_path, to_string(tag)}
+      {shortcode, external_path, [to_string(tag)]}
     end)
   end
 
index 3916d7c41da3d56443bf57bae630ec9525b1e001..2a81dcc674e98df6db136b3aea5803c075cd1a87 100644 (file)
@@ -190,7 +190,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
         "static_url" => url,
         "visible_in_picker" => true,
         "url" => url,
-        "tags" => String.split(tags, ",")
+        "tags" => tags
       }
     end)
   end
index 9441984c7e1de3ba74559385c2a6e214e2b11f7e..8665e058a39ff596fa2bd1f8b576a965eceae67a 100644 (file)
@@ -286,7 +286,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
     emoji =
       Emoji.get_all()
       |> Enum.map(fn {short_code, path, tags} ->
-        {short_code, %{image_url: path, tags: String.split(tags, ",")}}
+        {short_code, %{image_url: path, tags: tags}}
       end)
       |> Enum.into(%{})
 
index cb1d62d00876da2190cadf270c53088be953ed8c..2eaa26be695af36aa0d92d4e4207ebb2c68f7d05 100644 (file)
@@ -15,7 +15,7 @@ defmodule Pleroma.EmojiTest do
       assert tuple_size(emoji) == 3
       assert is_binary(code)
       assert is_binary(path)
-      assert is_binary(tags)
+      assert is_list(tags)
     end
 
     test "random emoji", %{emoji_list: emoji_list} do
@@ -25,7 +25,7 @@ defmodule Pleroma.EmojiTest do
       assert tuple_size(emoji) == 3
       assert is_binary(code)
       assert is_binary(path)
-      assert is_binary(tags)
+      assert is_list(tags)
     end
   end