Return user specific json for logged in users.
[akkoma] / lib / pleroma / web / twitter_api / twitter_api.ex
index fb093b22744c7126d014c82ca703247e176a52ea..58fd51a62bcd63433a644115f6018582b33fb7fa 100644 (file)
@@ -26,12 +26,12 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
 
   def fetch_friend_statuses(user, opts \\ %{}) do
     ActivityPub.fetch_activities(user.following, opts)
-    |> activities_to_statuses
+    |> activities_to_statuses(%{for: user})
   end
 
-  def fetch_public_statuses(opts \\ %{}) do
+  def fetch_public_statuses(user, opts \\ %{}) do
     ActivityPub.fetch_public_activities(opts)
-    |> activities_to_statuses
+    |> activities_to_statuses(%{for: user})
   end
 
   def follow(%User{} = follower, followed_id) do
@@ -42,11 +42,19 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
     end
   end
 
-  defp activities_to_statuses(activities) do
+  def unfollow(%User{} = follower, followed_id) do
+    with %User{} = followed <- Repo.get(User, followed_id),
+         { :ok, follower } <- User.unfollow(follower, followed)
+    do
+      { :ok, follower, followed }
+    end
+  end
+
+  defp activities_to_statuses(activities, opts) do
     Enum.map(activities, fn(activity) ->
       actor = get_in(activity.data, ["actor"])
       user = Repo.get_by!(User, ap_id: actor)
-      ActivityRepresenter.to_map(activity, %{user: user})
+      ActivityRepresenter.to_map(activity, Map.merge(opts, %{user: user}))
     end)
   end
 end