aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkaniini <ariadne@dereferenced.org>2019-10-06 15:33:33 +0000
committerkaniini <ariadne@dereferenced.org>2019-10-06 15:33:33 +0000
commitf6ff19e0745a2362406ea2b073e7ca85f2121d41 (patch)
tree23189976f548cc4c56f6162b635d32d3ed62971f /lib
parentb5e6ba323d8a6d6a0440787ee4cdc39c25bdc778 (diff)
parentc6b79803037a6cc7ebc94c01d54b8b79ccebd281 (diff)
downloadpleroma-f6ff19e0745a2362406ea2b073e7ca85f2121d41.tar.gz
Merge branch 'backport/custom-field-update' into 'maint/1.1'
Backport: custom field update See merge request pleroma/pleroma!1805
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex23
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
index edc5e7214..fcca6858d 100644
--- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
+++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
@@ -119,6 +119,14 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end
end
+ defp normalize_fields_attributes(fields) do
+ if Enum.all?(fields, &is_tuple/1) do
+ Enum.map(fields, fn {_, v} -> v end)
+ else
+ fields
+ end
+ end
+
def update_credentials(%{assigns: %{user: user}} = conn, params) do
original_user = user
@@ -143,6 +151,17 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|> Enum.concat(Formatter.get_emoji_map(emojis_text))
|> Enum.dedup()
+ params =
+ if Map.has_key?(params, "fields_attributes") do
+ Map.update!(params, "fields_attributes", fn fields ->
+ fields
+ |> normalize_fields_attributes()
+ |> Enum.filter(fn %{"name" => n} -> n != "" end)
+ end)
+ else
+ params
+ end
+
info_params =
[
:no_rich_text,
@@ -159,12 +178,12 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end)
end)
|> add_if_present(params, "default_scope", :default_scope)
- |> add_if_present(params, "fields", :fields, fn fields ->
+ |> add_if_present(params, "fields_attributes", :fields, fn fields ->
fields = Enum.map(fields, fn f -> Map.update!(f, "value", &AutoLinker.link(&1)) end)
{:ok, fields}
end)
- |> add_if_present(params, "fields", :raw_fields)
+ |> add_if_present(params, "fields_attributes", :raw_fields)
|> add_if_present(params, "pleroma_settings_store", :pleroma_settings_store, fn value ->
{:ok, Map.merge(user.info.pleroma_settings_store, value)}
end)