Merge branch 'develop' into dtluna/pleroma-feature/unfollow-activity
[akkoma] / lib / pleroma / user.ex
index 23be6276ebe6abce6bffa9567d4c5a7d6225b600..4510be77052129bdf32950d2903fe6847f9171e2 100644 (file)
@@ -4,7 +4,8 @@ defmodule Pleroma.User do
   import Ecto.{Changeset, Query}
   alias Pleroma.{Repo, User, Object, Web}
   alias Comeonin.Pbkdf2
-  alias Pleroma.Web.OStatus
+  alias Pleroma.Web.{OStatus, Websub}
+  alias Pleroma.Web.ActivityPub.ActivityPub
 
   schema "users" do
     field :bio, :string
@@ -88,6 +89,10 @@ defmodule Pleroma.User do
       {:error,
        "Could not follow user: #{followed.nickname} is already on your list."}
     else
+      if !followed.local do
+        Websub.subscribe(follower, followed)
+      end
+
       following = [ap_followers | follower.following]
       |> Enum.uniq
 
@@ -103,9 +108,10 @@ defmodule Pleroma.User do
       following = follower.following
       |> List.delete(ap_followers)
 
-      follower
+      { :ok, follower } = follower
       |> follow_changeset(%{following: following})
       |> Repo.update
+      { :ok, follower, ActivityPub.fetch_latest_follow(follower, followed)}
     else
       {:error, "Not subscribed!"}
     end