Deprecate Pleroma.Web.base_url/0
[akkoma] / lib / pleroma / emoji / formatter.ex
index acdef3988eeef967d61ef59a99a17687a4051047..1914519528ed367d9852e91c9d79837cc69f9734 100644 (file)
@@ -1,10 +1,11 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Emoji.Formatter do
   alias Pleroma.Emoji
   alias Pleroma.HTML
+  alias Pleroma.Web.Endpoint
   alias Pleroma.Web.MediaProxy
 
   def emojify(text) do
@@ -15,12 +16,12 @@ defmodule Pleroma.Emoji.Formatter do
 
   def emojify(text, emoji, strip \\ false) do
     Enum.reduce(emoji, text, fn
-      {_, _, _, emoji, file}, text ->
+      {_, %Emoji{safe_code: emoji, safe_file: file}}, text ->
         String.replace(text, ":#{emoji}:", prepare_emoji_html(emoji, file, strip))
 
-      emoji_data, text ->
-        emoji = HTML.strip_tags(elem(emoji_data, 0))
-        file = HTML.strip_tags(elem(emoji_data, 1))
+      {unsafe_emoji, unsafe_file}, text ->
+        emoji = HTML.strip_tags(unsafe_emoji)
+        file = HTML.strip_tags(unsafe_file)
         String.replace(text, ":#{emoji}:", prepare_emoji_html(emoji, file, strip))
     end)
     |> HTML.filter_tags()
@@ -38,22 +39,14 @@ defmodule Pleroma.Emoji.Formatter do
 
   def demojify(text, nil), do: text
 
-  @doc "Outputs a list of the emoji-shortcodes in a text"
-  def get_emoji(text) when is_binary(text) do
-    Enum.filter(Emoji.get_all(), fn {emoji, _, _, _, _} ->
-      String.contains?(text, ":#{emoji}:")
-    end)
-  end
-
-  def get_emoji(_), do: []
-
   @doc "Outputs a list of the emoji-Maps in a text"
   def get_emoji_map(text) when is_binary(text) do
-    get_emoji(text)
-    |> Enum.reduce(%{}, fn {name, file, _group, _, _}, acc ->
-      Map.put(acc, name, "#{Pleroma.Web.Endpoint.static_url()}#{file}")
+    Emoji.get_all()
+    |> Enum.filter(fn {emoji, %Emoji{}} -> String.contains?(text, ":#{emoji}:") end)
+    |> Enum.reduce(%{}, fn {name, %Emoji{file: file}}, acc ->
+      Map.put(acc, name, to_string(URI.merge(Endpoint.url(), file)))
     end)
   end
 
-  def get_emoji_map(_), do: []
+  def get_emoji_map(_), do: %{}
 end