diff options
| author | Francis Dinh <normandy@firemail.cc> | 2018-05-21 04:35:43 -0400 | 
|---|---|---|
| committer | Francis Dinh <normandy@firemail.cc> | 2018-05-21 04:35:43 -0400 | 
| commit | 25733322140d13a08e723b9366646cf971a84381 (patch) | |
| tree | a3ce94b351be101edd557343b6fc808ad2a373cc /lib | |
| parent | c8a16f334dd6df12f90ee7f45b509642c8098b5b (diff) | |
| download | pleroma-25733322140d13a08e723b9366646cf971a84381.tar.gz pleroma-25733322140d13a08e723b9366646cf971a84381.zip | |
Add undo block handler
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 23 | 
1 files changed, 20 insertions, 3 deletions
| diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 20b1603df..24e876efb 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -247,10 +247,10 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do            "object" => %{"type" => "Follow", "object" => followed},            "actor" => follower,            "id" => id -        } = data +        } = _data        ) do -    with %User{local: true} = followed = User.get_cached_by_ap_id(followed), -         %User{} = follower = User.get_or_fetch_by_ap_id(follower), +    with %User{local: true} = followed <- User.get_cached_by_ap_id(followed), +         %User{} = follower <- User.get_or_fetch_by_ap_id(follower),           {:ok, activity} <- ActivityPub.unfollow(follower, followed, id, false) do        User.unfollow(follower, followed)        {:ok, activity} @@ -260,6 +260,23 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do    end    def handle_incoming( +        %{ +          "type" => "Undo", +          "object" => %{"type" => "Block", "object" => blocked}, +          "actor" => blocker, +          "id" => id +        } = _data +      ) do +    with %User{local: true} = blocked <- User.get_cached_by_ap_id(blocked), +         %User{} = blocker <- User.get_or_fetch_by_ap_id(blocker), +         {:ok, activity} <- ActivityPub.unblock(blocker, blocked, id, false) do +      {:ok, activity} +    else +      e -> :error +    end +  end + +  def handle_incoming(          %{"type" => "Block", "object" => blocked, "actor" => blocker, "id" => id} = data        ) do      with %User{local: true} = blocked = User.get_cached_by_ap_id(blocked), | 
