forked from AkkomaGang/akkoma
Merge branch 'emoji-in-summary' into 'develop'
Strip HTML in and allow emoji in summaries. See merge request pleroma/pleroma!631
This commit is contained in:
commit
145d6fe6e9
4 changed files with 34 additions and 5 deletions
lib/pleroma/web
test/web/twitter_api/views
|
@ -124,7 +124,7 @@ def post(user, %{"status" => status} = data) do
|
||||||
Map.put(
|
Map.put(
|
||||||
object,
|
object,
|
||||||
"emoji",
|
"emoji",
|
||||||
Formatter.get_emoji(status)
|
(Formatter.get_emoji(status) ++ Formatter.get_emoji(data["spoiler_text"]))
|
||||||
|> Enum.reduce(%{}, fn {name, file}, acc ->
|
|> Enum.reduce(%{}, fn {name, file}, acc ->
|
||||||
Map.put(acc, name, "#{Pleroma.Web.Endpoint.static_url()}#{file}")
|
Map.put(acc, name, "#{Pleroma.Web.Endpoint.static_url()}#{file}")
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -207,7 +207,7 @@ def to_map(
|
||||||
"activity_type" => "post",
|
"activity_type" => "post",
|
||||||
"possibly_sensitive" => possibly_sensitive,
|
"possibly_sensitive" => possibly_sensitive,
|
||||||
"visibility" => Pleroma.Web.MastodonAPI.StatusView.get_visibility(object),
|
"visibility" => Pleroma.Web.MastodonAPI.StatusView.get_visibility(object),
|
||||||
"summary" => object["summary"]
|
"summary" => HTML.strip_tags(object["summary"]) |> Formatter.emojify(object["emoji"])
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -289,7 +289,7 @@ def render(
|
||||||
"activity_type" => "post",
|
"activity_type" => "post",
|
||||||
"possibly_sensitive" => possibly_sensitive,
|
"possibly_sensitive" => possibly_sensitive,
|
||||||
"visibility" => Pleroma.Web.MastodonAPI.StatusView.get_visibility(object),
|
"visibility" => Pleroma.Web.MastodonAPI.StatusView.get_visibility(object),
|
||||||
"summary" => summary
|
"summary" => HTML.strip_tags(summary) |> Formatter.emojify(object["emoji"])
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,35 @@ test "a create activity with a html status" do
|
||||||
"#Bike log - Commute Tuesday\nhttps://pla.bike/posts/20181211/\n#cycling #CHScycling #commute\nMVIMG_20181211_054020.jpg"
|
"#Bike log - Commute Tuesday\nhttps://pla.bike/posts/20181211/\n#cycling #CHScycling #commute\nMVIMG_20181211_054020.jpg"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "a create activity with a summary containing emoji" do
|
||||||
|
{:ok, activity} =
|
||||||
|
CommonAPI.post(insert(:user), %{
|
||||||
|
"spoiler_text" => ":woollysocks: meow",
|
||||||
|
"status" => "."
|
||||||
|
})
|
||||||
|
|
||||||
|
result = ActivityView.render("activity.json", activity: activity)
|
||||||
|
|
||||||
|
expected =
|
||||||
|
"<img height=\"32px\" width=\"32px\" alt=\"woollysocks\" title=\"woollysocks\" src=\"http://localhost:4001/finmoji/128px/woollysocks-128.png\" /> meow"
|
||||||
|
|
||||||
|
assert result["summary"] == expected
|
||||||
|
end
|
||||||
|
|
||||||
|
test "a create activity with a summary containing invalid HTML" do
|
||||||
|
{:ok, activity} =
|
||||||
|
CommonAPI.post(insert(:user), %{
|
||||||
|
"spoiler_text" => "<span style=\"color: magenta; font-size: 32px;\">meow</span>",
|
||||||
|
"status" => "."
|
||||||
|
})
|
||||||
|
|
||||||
|
result = ActivityView.render("activity.json", activity: activity)
|
||||||
|
|
||||||
|
expected = "meow"
|
||||||
|
|
||||||
|
assert result["summary"] == expected
|
||||||
|
end
|
||||||
|
|
||||||
test "a create activity with a note" do
|
test "a create activity with a note" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
other_user = insert(:user, %{nickname: "shp"})
|
other_user = insert(:user, %{nickname: "shp"})
|
||||||
|
@ -73,14 +102,14 @@ test "a create activity with a note" do
|
||||||
"repeat_num" => 0,
|
"repeat_num" => 0,
|
||||||
"repeated" => false,
|
"repeated" => false,
|
||||||
"statusnet_conversation_id" => convo_id,
|
"statusnet_conversation_id" => convo_id,
|
||||||
|
"summary" => "",
|
||||||
"statusnet_html" =>
|
"statusnet_html" =>
|
||||||
"Hey <span><a data-user=\"#{other_user.id}\" href=\"#{other_user.ap_id}\">@<span>shp</span></a></span>!",
|
"Hey <span><a data-user=\"#{other_user.id}\" href=\"#{other_user.ap_id}\">@<span>shp</span></a></span>!",
|
||||||
"tags" => [],
|
"tags" => [],
|
||||||
"text" => "Hey @shp!",
|
"text" => "Hey @shp!",
|
||||||
"uri" => activity.data["object"]["id"],
|
"uri" => activity.data["object"]["id"],
|
||||||
"user" => UserView.render("show.json", %{user: user}),
|
"user" => UserView.render("show.json", %{user: user}),
|
||||||
"visibility" => "direct",
|
"visibility" => "direct"
|
||||||
"summary" => nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
assert result == expected
|
assert result == expected
|
||||||
|
|
Loading…
Reference in a new issue