diff options
author | lain <lain@soykaf.club> | 2018-12-05 21:27:56 +0100 |
---|---|---|
committer | lain <lain@soykaf.club> | 2018-12-05 21:27:56 +0100 |
commit | 76d6b1c6ab2813b1fb8f4473e4d722cc32fb2fed (patch) | |
tree | 5308f2d4c169085dfbe22a95a86c5271e4285ace /lib/pleroma/user.ex | |
parent | 3ea4476445a5e9b6ec1625d7caa537f79254e9d0 (diff) | |
parent | 5f0c2372bc8be3763b649b13ee142c273583329e (diff) | |
download | pleroma-76d6b1c6ab2813b1fb8f4473e4d722cc32fb2fed.tar.gz |
Merge remote-tracking branch 'origin' into follower-hiding
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 76712b4bf..74ae5ef0d 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -4,6 +4,8 @@ defmodule Pleroma.User do import Ecto.{Changeset, Query} alias Pleroma.{Repo, User, Object, Web, Activity, Notification} alias Comeonin.Pbkdf2 + alias Pleroma.Formatter + alias Pleroma.Web.CommonAPI.Utils, as: CommonUtils alias Pleroma.Web.{OStatus, Websub, OAuth} alias Pleroma.Web.ActivityPub.{Utils, ActivityPub} @@ -175,6 +177,7 @@ defmodule Pleroma.User do |> validate_format(:email, @email_regex) |> validate_length(:bio, max: 1000) |> validate_length(:name, min: 1, max: 100) + |> put_change(:info, %Pleroma.User.Info{}) if changeset.valid? do hashed = Pbkdf2.hashpwsalt(changeset.changes[:password]) @@ -802,4 +805,18 @@ defmodule Pleroma.User do :error end end + + def parse_bio(bio, user \\ %User{info: %{source_data: %{}}}) do + 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) + + CommonUtils.format_input(bio, mentions, tags, "text/plain") |> Formatter.emojify(emoji) + end end |