Browse Source

user: Add support for custom emojis in profile fields

chores/our-libs-hex-releases
Haelwenn (lanodan) Monnier 4 years ago
parent
commit
cc7153cd82
No known key found for this signature in database GPG Key ID: D5B7A8E43C997DEE
2 changed files with 38 additions and 4 deletions
  1. +14
    -4
      lib/pleroma/user.ex
  2. +24
    -0
      test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs

+ 14
- 4
lib/pleroma/user.ex View File

@@ -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


+ 24
- 0
test/web/mastodon_api/controllers/account_controller/update_credentials_test.exs View File

@@ -344,6 +344,30 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController.UpdateCredentialsTest do
]
end

test "emojis in fields labels", %{conn: conn} do
fields = [
%{"name" => ":firefox:", "value" => "is best 2hu"},
%{"name" => "they wins", "value" => ":blank:"}
]

account_data =
conn
|> patch("/api/v1/accounts/update_credentials", %{"fields_attributes" => fields})
|> json_response_and_validate_schema(200)

assert account_data["fields"] == [
%{"name" => ":firefox:", "value" => "is best 2hu"},
%{"name" => "they wins", "value" => ":blank:"}
]

assert account_data["source"]["fields"] == [
%{"name" => ":firefox:", "value" => "is best 2hu"},
%{"name" => "they wins", "value" => ":blank:"}
]

assert [%{"shortcode" => "blank"}, %{"shortcode" => "firefox"}] = account_data["emojis"]
end

test "update fields via x-www-form-urlencoded", %{conn: conn} do
fields =
[


Loading…
Cancel
Save