allow external emoji
authorRoger Braun <work@rogerbraun.net>
Wed, 6 Feb 2019 17:05:34 +0000 (18:05 +0100)
committerMark Felder <feld@feld.me>
Wed, 6 Jan 2021 16:13:01 +0000 (10:13 -0600)
config/emoji.txt
lib/pleroma/emoji/formatter.ex
test/pleroma/web/common_api_test.exs

index 52b714ee5d28e0ad3c90c40e1531d0aff3cdc6d8..a2c5add2e873728aef8e878a04bc74d4a50c4e03 100644 (file)
@@ -1,3 +1,4 @@
 firefox, /emoji/Firefox.gif, Gif,Fun
 blank, /emoji/blank.png, Fun
 dinosaur, /emoji/dino walking.gif, Gif
+external_emoji, https://example.com/emoji.png
index dc45b8a38ed4a0bb6834dd456705735752c16a9d..992b20e1289efb7f5ad35d165c581d747cb22f75 100644 (file)
@@ -5,6 +5,7 @@
 defmodule Pleroma.Emoji.Formatter do
   alias Pleroma.Emoji
   alias Pleroma.HTML
+  alias Pleroma.Web
   alias Pleroma.Web.MediaProxy
 
   def emojify(text) do
@@ -43,7 +44,7 @@ defmodule Pleroma.Emoji.Formatter do
     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, "#{Pleroma.Web.Endpoint.static_url()}#{file}")
+      Map.put(acc, name, to_string(URI.merge(Web.base_url(), file)))
     end)
   end
 
index 585b2c174c9564c4aa2ccb408c7847f39374b671..b81035a9d04a3a16b6d50c5f3e22c5b9bb5ba591 100644 (file)
@@ -504,6 +504,19 @@ defmodule Pleroma.Web.CommonAPITest do
   end
 
   describe "posting" do
+    test "it adds an emoji on an external site" do
+      user = insert(:user)
+      {:ok, activity} = CommonAPI.post(user, %{status: "hey :external_emoji:"})
+
+      assert %{"external_emoji" => url} = Object.normalize(activity).data["emoji"]
+      assert url == "https://example.com/emoji.png"
+
+      {:ok, activity} = CommonAPI.post(user, %{status: "hey :blank:"})
+
+      assert %{"blank" => url} = Object.normalize(activity).data["emoji"]
+      assert url == "#{Pleroma.Web.base_url()}/emoji/blank.png"
+    end
+
     test "deactivated users can't post" do
       user = insert(:user, deactivated: true)
       assert {:error, _} = CommonAPI.post(user, %{status: "ye"})