Treat internal emoji like external.
authorRoger Braun <rbraun@Bobble.local>
Mon, 20 Nov 2017 16:53:21 +0000 (17:53 +0100)
committerRoger Braun <rbraun@Bobble.local>
Mon, 20 Nov 2017 16:53:21 +0000 (17:53 +0100)
lib/pleroma/web/common_api/common_api.ex
lib/pleroma/web/ostatus/activity_representer.ex
test/web/ostatus/activity_representer_test.exs
test/web/twitter_api/twitter_api_test.exs

index 9bc7f2ce6b5aebc287aa71d6e5c4ec7de603c05d..dc94e53771d75990f32024a80c15a54d96c012f3 100644 (file)
@@ -59,7 +59,8 @@ defmodule Pleroma.Web.CommonAPI do
          content_html <- make_content_html(status, mentions, attachments, tags),
          context <- make_context(inReplyTo),
          cw <- data["spoiler_text"],
-         object <- make_note_data(user.ap_id, to, context, content_html, attachments, inReplyTo, tags, cw) do
+         object <- make_note_data(user.ap_id, to, context, content_html, attachments, inReplyTo, tags, cw),
+         object <- Map.put(object, "emoji", Formatter.get_emoji(status) |> Enum.reduce(%{}, fn({name, file}, acc) -> Map.put(acc, name, "#{Pleroma.Web.Endpoint.static_url}#{file}") end)) do
       res = ActivityPub.create(to, user, context, object)
       User.increase_note_count(user)
       res
index cfc342fca46257e42e36a50ed6fdc253054e0879..aa2b1df39784e187cf0d3df06937ee792db76689 100644 (file)
@@ -56,9 +56,9 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do
 
   defp get_links(_activity), do: []
 
-  defp get_emoji_links(content) do
-    Enum.map(Formatter.get_emoji(content), fn({emoji, file}) ->
-      {:link, [name: to_charlist(emoji), rel: 'emoji', href: to_charlist("#{Pleroma.Web.Endpoint.static_url}#{file}")], []}
+  defp get_emoji_links(emojis) do
+    Enum.map(emojis, fn({emoji, file}) ->
+      {:link, [name: to_charlist(emoji), rel: 'emoji', href: to_charlist(file)], []}
     end)
   end
 
@@ -81,7 +81,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do
     categories = (activity.data["object"]["tag"] || [])
     |> Enum.map(fn (tag) -> {:category, [term: to_charlist(tag)], []} end)
 
-    emoji_links = get_emoji_links(activity.data["object"]["content"] || "")
+    emoji_links = get_emoji_links(activity.data["object"]["emoji"] || %{})
 
     summary = if activity.data["object"]["summary"] do
       [{:summary, [], h.(activity.data["object"]["summary"])}]
index 0d83ad964ecb5debb3211cd35271a9c6179993d2..ed7fdc4322f1e25f881e175edb5ad057593a6068 100644 (file)
@@ -41,7 +41,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
     <link type="text/html" href="#{note_activity.data["object"]["id"]}" rel="alternate" />
     <category term="2hu"/>
     <link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
-    <link name="moominmamma" rel="emoji" href="#{Pleroma.Web.Endpoint.static_url}/finmoji/128px/moominmamma-128.png" />
+    <link name="2hu" rel="emoji" href="corndog.png" />
     """
 
     tuple = ActivityRepresenter.to_simple_form(note_activity, user)
@@ -81,7 +81,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
     <category term="2hu"/>
     <thr:in-reply-to ref="#{note.data["object"]["id"]}" href="someurl" />
     <link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
-    <link name="moominmamma" rel="emoji" href="#{Pleroma.Web.Endpoint.static_url}/finmoji/128px/moominmamma-128.png" />
+    <link name="2hu" rel="emoji" href="corndog.png" />
     """
 
     tuple = ActivityRepresenter.to_simple_form(answer, user)
index 60daeec709b4dbbefdd70b713103f8e1c16c7def..96552f97e075507dfc85b7b0a39d0cbf55df4698 100644 (file)
@@ -28,13 +28,13 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
     object = Repo.insert!(%Object{data: object_data})
 
     input = %{
-      "status" => "Hello again, @shp.<script></script>\nThis is on another line. #2hu #epic #phantasmagoric",
+      "status" => "Hello again, @shp.<script></script>\nThis is on another :moominmamma: line. #2hu #epic #phantasmagoric",
       "media_ids" => [object.id]
     }
 
     { :ok, activity = %Activity{} } = TwitterAPI.create_status(user, input)
 
-    assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.&lt;script&gt;&lt;/script&gt;<br>This is on another line. #2hu #epic #phantasmagoric<br><a href=\"http://example.org/image.jpg\" class='attachment'>image.jpg</a>"
+    assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.&lt;script&gt;&lt;/script&gt;<br>This is on another :moominmamma: line. #2hu #epic #phantasmagoric<br><a href=\"http://example.org/image.jpg\" class='attachment'>image.jpg</a>"
     assert get_in(activity.data, ["object", "type"]) == "Note"
     assert get_in(activity.data, ["object", "actor"]) == user.ap_id
     assert get_in(activity.data, ["actor"]) == user.ap_id
@@ -43,6 +43,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
     assert Enum.member?(get_in(activity.data, ["to"]), "shp")
     assert activity.local == true
 
+    assert %{"moominmamma" => "http://localhost:4001/finmoji/128px/moominmamma-128.png"} = activity.data["object"]["emoji"]
+
     # hashtags
     assert activity.data["object"]["tag"] == ["2hu", "epic", "phantasmagoric"]