aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorFrancis Dinh <normandy@firemail.cc>2018-05-21 04:35:43 -0400
committerFrancis Dinh <normandy@firemail.cc>2018-05-21 04:35:43 -0400
commit25733322140d13a08e723b9366646cf971a84381 (patch)
treea3ce94b351be101edd557343b6fc808ad2a373cc /lib
parentc8a16f334dd6df12f90ee7f45b509642c8098b5b (diff)
downloadpleroma-25733322140d13a08e723b9366646cf971a84381.tar.gz
Add undo block handler
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex23
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),