aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>2020-07-09 19:07:07 +0200
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>2020-07-09 19:21:58 +0200
commitcc7153cd828afef1564b58649875b5529c078054 (patch)
tree01aa0fe95293f8d76e8ae22cd7d91bb5930d00d8 /lib
parent68036f5a3b7b609f4464650c2ae40b9679d45291 (diff)
downloadpleroma-cc7153cd828afef1564b58649875b5529c078054.tar.gz
user: Add support for custom emojis in profile fields
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user.ex18
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 9d1314f81..19b361b88 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -527,11 +527,21 @@ defmodule Pleroma.User do
end
defp put_emoji(changeset) do
- bio = get_change(changeset, :bio)
- name = get_change(changeset, :name)
+ emojified_fields = [:bio, :name, :raw_fields]
+
+ if Enum.any?(changeset.changes, fn {k, _} -> k in emojified_fields end) do
+ bio = Emoji.Formatter.get_emoji_map(get_field(changeset, :bio))
+ name = Emoji.Formatter.get_emoji_map(get_field(changeset, :name))
+
+ emoji = Map.merge(bio, name)
+
+ emoji =
+ changeset
+ |> get_field(:raw_fields)
+ |> Enum.reduce(emoji, fn x, acc ->
+ Map.merge(acc, Emoji.Formatter.get_emoji_map(x["name"] <> x["value"]))
+ end)
- if bio || name do
- emoji = Map.merge(Emoji.Formatter.get_emoji_map(bio), Emoji.Formatter.get_emoji_map(name))
put_change(changeset, :emoji, emoji)
else
changeset