Twitter API: Support Mastodon-style bios
(multi-line, with links, and user mentions)
This commit is contained in:
parent
c1b8a6a73b
commit
5debd7b5cc
2 changed files with 15 additions and 6 deletions
|
@ -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 @@ def raw_empty_array(conn, _params) 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
|
||||
|
|
|
@ -36,12 +36,10 @@ def render("user.json", %{user: user = %User{}} = assigns) 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,
|
||||
|
|
Loading…
Reference in a new issue