diff options
author | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2019-10-06 04:41:06 +0000 |
---|---|---|
committer | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2019-10-06 04:41:06 +0000 |
commit | 9e34919dcdbeedf8eb623dc86b05f63ef44d8859 (patch) | |
tree | 5fe1cb10baf4fda8b41079c691fd87e24f098c2f /lib | |
parent | 7a318d74e64fd0df9b3be202810dee2119862aba (diff) | |
parent | f364438032b387624ced6b53ec0666738aa199ca (diff) | |
download | pleroma-9e34919dcdbeedf8eb623dc86b05f63ef44d8859.tar.gz |
Merge branch 'fix-prameter-name-of-accounts-update-credentials' into 'develop'
Fix custom fields of accounts update credentials
See merge request pleroma/pleroma!1597
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/mastodon_api/controllers/account_controller.ex | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index d02e35bc8..a56f0e149 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -105,6 +105,17 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do |> Enum.concat(Emoji.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, @@ -122,12 +133,12 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do add_if_present(acc, params, to_string(key), key, &{:ok, truthy_param?(&1)}) 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) @@ -168,6 +179,14 @@ defmodule Pleroma.Web.MastodonAPI.AccountController 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 + @doc "GET /api/v1/accounts/relationships" def relationships(%{assigns: %{user: user}} = conn, %{"id" => id}) do targets = User.get_all_by_ids(List.wrap(id)) |