add remote user count for the heck of it
[akkoma] / lib / pleroma / emoji.ex
index f4043ac80b9d317ab6c39369b5d7cc69cd74ecdf..dbe9abe8d54775b188afc5af2b962643fa7dc571 100644 (file)
@@ -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,13 +160,17 @@ 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" => emoji, "tag" => []}), do: nil
+  def emoji_url(%{"type" => "EmojiReact", "content" => _, "tag" => []}), do: nil
 
   def emoji_url(%{"type" => "EmojiReact", "content" => emoji, "tag" => tags}) do
     tag =
@@ -182,4 +187,22 @@ defmodule Pleroma.Emoji do
   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