logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
commit: 959e993c7d112d9a30baae3d403687903a7f6a27
parent 16b1fcd2719b744c81851e778df2519dc0131010
Author: Roger Braun <roger@rogerbraun.net>
Date:   Sat, 16 Sep 2017 16:40:20 +0200

Apply incoming custom emoji.

Diffstat:

Mlib/pleroma/formatter.ex10++++++++--
Mlib/pleroma/web/twitter_api/representers/activity_representer.ex4+++-
Mtest/web/twitter_api/representers/activity_representer_test.exs10+++++++---
3 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex @@ -95,8 +95,14 @@ defmodule Pleroma.Formatter do @emoji @finmoji_with_filenames - def emojify(text) do - Enum.reduce(@emoji, text, fn ({emoji, file}, text) -> + def emojify(text, additional \\ nil) do + all_emoji = if additional do + @emoji ++ Map.to_list(additional) + else + @emoji + end + + Enum.reduce(all_emoji, text, fn ({emoji, file}, text) -> String.replace(text, ":#{emoji}:", "<img height='32px' width='32px' alt='#{emoji}' title='#{emoji}' src='#{file}' />") end) end diff --git a/lib/pleroma/web/twitter_api/representers/activity_representer.ex b/lib/pleroma/web/twitter_api/representers/activity_representer.ex @@ -135,11 +135,13 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do tags = activity.data["object"]["tag"] || [] possibly_sensitive = Enum.member?(tags, "nsfw") + html = HtmlSanitizeEx.basic_html(content) |> Formatter.emojify(object["emoji"]) + %{ "id" => activity.id, "uri" => activity.data["object"]["id"], "user" => UserView.render("show.json", %{user: user, for: opts[:for]}), - "statusnet_html" => HtmlSanitizeEx.basic_html(content) |> Formatter.emojify, + "statusnet_html" => html, "text" => HtmlSanitizeEx.strip_tags(content), "is_local" => activity.local, "is_post_verb" => true, diff --git a/test/web/twitter_api/representers/activity_representer_test.exs b/test/web/twitter_api/representers/activity_representer_test.exs @@ -70,7 +70,7 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do } } - content_html = "<script>alert('YAY')</script>Some content mentioning <a href='#{mentioned_user.ap_id}'>@shp</shp>" + content_html = "<script>alert('YAY')</script>Some :2hu: content mentioning <a href='#{mentioned_user.ap_id}'>@shp</shp>" content = HtmlSanitizeEx.strip_tags(content_html) date = DateTime.from_naive!(~N[2016-05-24 13:26:08.003], "Etc/UTC") |> DateTime.to_iso8601 @@ -99,7 +99,10 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do "like_count" => 5, "announcement_count" => 3, "context" => "2hu", - "tag" => ["content", "mentioning", "nsfw"] + "tag" => ["content", "mentioning", "nsfw"], + "emoji" => %{ + "2hu" => "corndog.png" + } }, "published" => date, "context" => "2hu" @@ -107,12 +110,13 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do local: false } + expected_html = "alert('YAY')Some <img height='32px' width='32px' alt='2hu' title='2hu' src='corndog.png' /> content mentioning <a href=\"#{mentioned_user.ap_id}\">@shp</a>" expected_status = %{ "id" => activity.id, "user" => UserView.render("show.json", %{user: user, for: follower}), "is_local" => false, - "statusnet_html" => HtmlSanitizeEx.basic_html(content_html), + "statusnet_html" => expected_html, "text" => content, "is_post_verb" => true, "created_at" => "Tue May 24 13:26:08 +0000 2016",