diff options
author | kaniini <nenolod@gmail.com> | 2019-01-29 14:47:36 +0000 |
---|---|---|
committer | kaniini <nenolod@gmail.com> | 2019-01-29 14:47:36 +0000 |
commit | 7a2c4f984b4ab3cc148908498c89af105ebb224a (patch) | |
tree | 64d188853e7d72d7c11cf4cf5d7c5c46131d5ec4 | |
parent | d03a116654bd7c4329b698a0f175e37aea8c2caa (diff) | |
parent | 57549f60434250d538d61b926906c0b7d284c627 (diff) | |
download | pleroma-7a2c4f984b4ab3cc148908498c89af105ebb224a.tar.gz |
Merge branch 'bugfix/fix-rejects' into 'develop'
follow request fixups
Closes #537
See merge request pleroma/pleroma!734
-rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 4 | ||||
-rw-r--r-- | lib/pleroma/web/activity_pub/utils.ex | 19 |
2 files changed, 21 insertions, 2 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index c2ced51d8..43725c3db 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -453,9 +453,9 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do {:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "reject"), %User{local: true} = follower <- User.get_cached_by_ap_id(follow_activity.data["actor"]), {:ok, activity} <- - ActivityPub.accept(%{ + ActivityPub.reject(%{ to: follow_activity.data["to"], - type: "Accept", + type: "Reject", actor: followed.ap_id, object: follow_activity.data["id"], local: false diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index e40d05fcd..3b0cdfe71 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -316,6 +316,25 @@ defmodule Pleroma.Web.ActivityPub.Utils do @doc """ Updates a follow activity's state (for locked accounts). """ + def update_follow_state( + %Activity{data: %{"actor" => actor, "object" => object, "state" => "pending"}} = activity, + state + ) do + try do + Ecto.Adapters.SQL.query!( + Repo, + "UPDATE activities SET data = jsonb_set(data, '{state}', $1) WHERE data->>'type' = 'Follow' AND data->>'actor' = $2 AND data->>'object' = $3 AND data->>'state' = 'pending'", + [state, actor, object] + ) + + activity = Repo.get(Activity, activity.id) + {:ok, activity} + rescue + e -> + {:error, e} + end + end + def update_follow_state(%Activity{} = activity, state) do with new_data <- activity.data |