X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Femoji.ex;h=dbe9abe8d54775b188afc5af2b962643fa7dc571;hb=9c7178286116d61a565fcba61ec64b20fec3a28a;hp=a3e7e5353276d0a36d2aa75d7eb5f81cbf95db2c;hpb=71f428185075291b3055e98826c226c49c4f3962;p=akkoma diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index a3e7e5353..dbe9abe8d 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Emoji do """ use GenServer + alias Pleroma.Emoji.Combinations alias Pleroma.Emoji.Loader require Logger @@ -124,7 +125,7 @@ defmodule Pleroma.Emoji do |> String.split("\n") |> Enum.filter(fn line -> line != "" and not String.starts_with?(line, "#") and - String.contains?(line, "qualified") + String.contains?(line, "fully-qualified") end) |> Enum.map(fn line -> line @@ -159,10 +160,49 @@ defmodule Pleroma.Emoji do if is_unicode_emoji?(name) do name else - ":#{name}:" + if String.starts_with?(name, ":") do + name + else + ":#{name}:" + end end end def maybe_quote(name), do: name - + + def emoji_url(%{"type" => "EmojiReact", "content" => _, "tag" => []}), do: nil + + def emoji_url(%{"type" => "EmojiReact", "content" => emoji, "tag" => tags}) do + tag = + tags + |> Enum.find(fn tag -> tag["type"] == "Emoji" && tag["name"] == stripped_name(emoji) end) + + if is_nil(tag) do + nil + else + tag + |> Map.get("icon") + |> Map.get("url") + end + end + + def emoji_url(_), do: nil + + def emoji_name_with_instance(name, url) do + url = url |> URI.parse() |> Map.get(:host) + "#{name}@#{url}" + end + + emoji_qualification_map = + emojis + |> Enum.filter(&String.contains?(&1, "\uFE0F")) + |> Combinations.variate_emoji_qualification() + + for {qualified, unqualified_list} <- emoji_qualification_map do + for unqualified <- unqualified_list do + def fully_qualify_emoji(unquote(unqualified)), do: unquote(qualified) + end + end + + def fully_qualify_emoji(emoji), do: emoji end