aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorensra <ensra@users.noreply.github.com>2018-08-21 14:03:36 +0100
committerensra <ensra@users.noreply.github.com>2018-08-21 14:03:36 +0100
commit5debd7b5cc31a6dedd8d0c8bc177be2cd1b995aa (patch)
tree1c8376a5d0b55e18d9ba2964fd863be05e217239 /lib
parentc1b8a6a73bfd5f30d5a290b9700ed4d41064ce77 (diff)
downloadpleroma-5debd7b5cc31a6dedd8d0c8bc177be2cd1b995aa.tar.gz
Twitter API: Support Mastodon-style bios
(multi-line, with links, and user mentions)
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/twitter_api/twitter_api_controller.ex15
-rw-r--r--lib/pleroma/web/twitter_api/views/user_view.ex6
2 files changed, 15 insertions, 6 deletions
diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex
index 65e67396b..dfa6d2464 100644
--- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex
@@ -1,7 +1,9 @@
defmodule Pleroma.Web.TwitterAPI.Controller do
use Pleroma.Web, :controller
+ alias Pleroma.Formatter
alias Pleroma.Web.TwitterAPI.{TwitterAPI, UserView, ActivityView, NotificationView}
alias Pleroma.Web.CommonAPI
+ alias Pleroma.Web.CommonAPI.Utils, as: CommonUtils
alias Pleroma.{Repo, Activity, User, Notification}
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.ActivityPub.Utils
@@ -411,8 +413,17 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
def update_profile(%{assigns: %{user: user}} = conn, params) do
params =
if bio = params["description"] do
- bio_brs = Regex.replace(~r/\r?\n/, bio, "<br>")
- Map.put(params, "bio", bio_brs)
+ mentions = Formatter.parse_mentions(bio)
+ tags = Formatter.parse_tags(bio)
+ emoji =
+ (user.info["source_data"]["tag"] || [])
+ |> Enum.filter(fn %{"type" => t} -> t == "Emoji" end)
+ |> Enum.map(fn %{"icon" => %{"url" => url}, "name" => name} ->
+ {String.trim(name, ":"), url}
+ end)
+ bio_html = CommonUtils.format_input(bio, mentions, tags)
+ |> Formatter.emojify(emoji)
+ Map.put(params, "bio", bio_html)
else
params
end
diff --git a/lib/pleroma/web/twitter_api/views/user_view.ex b/lib/pleroma/web/twitter_api/views/user_view.ex
index 7d0f0e703..25fda1aa8 100644
--- a/lib/pleroma/web/twitter_api/views/user_view.ex
+++ b/lib/pleroma/web/twitter_api/views/user_view.ex
@@ -36,12 +36,10 @@ defmodule Pleroma.Web.TwitterAPI.UserView do
{String.trim(name, ":"), url}
end)
- bio = HtmlSanitizeEx.strip_tags(user.bio)
-
data = %{
"created_at" => user.inserted_at |> Utils.format_naive_asctime(),
- "description" => bio,
- "description_html" => bio |> Formatter.emojify(emoji),
+ "description" => HtmlSanitizeEx.strip_tags(user.bio |> String.replace("<br>", "\n")),
+ "description_html" => HtmlSanitizeEx.basic_html(user.bio),
"favourites_count" => 0,
"followers_count" => user_info[:follower_count],
"following" => following,