summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaniini <ariadne@dereferenced.org>2019-08-25 19:35:28 +0000
committerkaniini <ariadne@dereferenced.org>2019-08-25 19:35:28 +0000
commit503139b3431799fed3f280d990fb26c6632f2f25 (patch)
tree329e2beca4199dc28af36ec04563123c2b9f9901
parent5e7098cf69bc8d113279168f6bbc728c6f317727 (diff)
parentd74efde94e3526b45dc9b31d9d48ffce14203ffa (diff)
Merge branch 'fix-all-custom-fields-deleted' into 'develop'
Fix not to use unupdated attachments when all fields are deleted See merge request pleroma/pleroma!1596
-rw-r--r--lib/pleroma/user/info.ex6
-rw-r--r--test/web/activity_pub/transmogrifier_test.exs8
2 files changed, 12 insertions, 2 deletions
diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex
index 45a39924b..779bfbc18 100644
--- a/lib/pleroma/user/info.ex
+++ b/lib/pleroma/user/info.ex
@@ -49,7 +49,7 @@ defmodule Pleroma.User.Info do
field(:mascot, :map, default: nil)
field(:emoji, {:array, :map}, default: [])
field(:pleroma_settings_store, :map, default: %{})
- field(:fields, {:array, :map}, default: [])
+ field(:fields, {:array, :map}, default: nil)
field(:raw_fields, {:array, :map}, default: [])
field(:notification_settings, :map,
@@ -422,7 +422,7 @@ defmodule Pleroma.User.Info do
# ``fields`` is an array of mastodon profile field, containing ``{"name": "…", "value": "…"}``.
# For example: [{"name": "Pronoun", "value": "she/her"}, …]
- def fields(%{fields: [], source_data: %{"attachment" => attachment}}) do
+ def fields(%{fields: nil, source_data: %{"attachment" => attachment}}) do
limit = Pleroma.Config.get([:instance, :max_remote_account_fields], 0)
attachment
@@ -431,6 +431,8 @@ defmodule Pleroma.User.Info do
|> Enum.take(limit)
end
+ def fields(%{fields: nil}), do: []
+
def fields(%{fields: fields}), do: fields
def follow_information_update(info, params) do
diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs
index 629c76c97..0661d5d7c 100644
--- a/test/web/activity_pub/transmogrifier_test.exs
+++ b/test/web/activity_pub/transmogrifier_test.exs
@@ -563,6 +563,14 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
%{"name" => "foo", "value" => "updated"},
%{"name" => "foo1", "value" => "updated"}
]
+
+ update_data = put_in(update_data, ["object", "attachment"], [])
+
+ {:ok, _} = Transmogrifier.handle_incoming(update_data)
+
+ user = User.get_cached_by_ap_id(user.ap_id)
+
+ assert User.Info.fields(user.info) == []
end
test "it works for incoming update activities which lock the account" do