Merge branch 'develop' into dtluna/pleroma-feature/unfollow-activity
[akkoma] / lib / pleroma / web / twitter_api / twitter_api.ex
index 3921c0d74e75adbb589695f2d8c81887b47896ea..793a55250ce7ca3af8a571c2a5d84706df8cc8b3 100644 (file)
@@ -136,16 +136,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
   def follow(%User{} = follower, params) do
     with {:ok, %User{} = followed} <- get_user(params),
          {:ok, follower} <- User.follow(follower, followed),
-         {:ok, activity} <- ActivityPub.insert(%{
-           "type" => "Follow",
-           "actor" => follower.ap_id,
-           "to" => [followed.ap_id],
-           "object" => followed.ap_id,
-           "published" => make_date()
-         })
+         {:ok, activity} <- ActivityPub.follow(follower, followed)
     do
-      # TODO move all this to ActivityPub
-      Pleroma.Web.Federator.enqueue(:publish, activity)
       {:ok, follower, followed, activity}
     else
       err -> err
@@ -153,10 +145,16 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
   end
 
   def unfollow(%User{} = follower, params) do
-    with {:ok, %User{} = unfollowed} <- get_user(params),
-         {:ok, follower} <- User.unfollow(follower, unfollowed)
+    with { :ok, %User{} = unfollowed } <- get_user(params),
+         { :ok, follower, follow_activity } <- User.unfollow(follower, unfollowed),
+         { :ok, _activity } <- ActivityPub.insert(%{
+           "type" => "Undo",
+           "actor" => follower.ap_id,
+           "object" => follow_activity.data["id"], # get latest Follow for these users
+           "published" => make_date()
+         })
     do
-      {:ok, follower, unfollowed}
+      { :ok, follower, unfollowed }
     else
       err -> err
     end