diff options
| -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  | 
