Don't reject already accepted subscriptions.
[akkoma] / lib / pleroma / web / mastodon_api / mastodon_api_controller.ex
index c231ff7f829e6b270a3a7677f30d38cd15cc01e9..a01a199fb8a2f1d83c76f8c206ee618cf3127483 100644 (file)
@@ -77,7 +77,10 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
   end
 
   def home_timeline(%{assigns: %{user: user}} = conn, params) do
-    activities = ActivityPub.fetch_activities([user.ap_id | user.following], Map.put(params, "type", "Create"))
+    params = params
+    |> Map.put("type", ["Create", "Announce"])
+
+    activities = ActivityPub.fetch_activities([user.ap_id | user.following], params)
     |> Enum.reverse
 
     conn
@@ -87,7 +90,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
 
   def public_timeline(%{assigns: %{user: user}} = conn, params) do
     params = params
-    |> Map.put("type", "Create")
+    |> Map.put("type", ["Create", "Announce"])
     |> Map.put("local_only", !!params["local"])
 
     activities = ActivityPub.fetch_public_activities(params)
@@ -102,7 +105,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
   def user_statuses(%{assigns: %{user: user}} = conn, params) do
     with %User{ap_id: ap_id} <- Repo.get(User, params["id"]) do
       params = params
-      |> Map.put("type", "Create")
+      |> Map.put("type", ["Create", "Announce"])
       |> Map.put("actor_id", ap_id)
 
       activities = ActivityPub.fetch_activities([], params)
@@ -312,6 +315,18 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
     json(conn, res)
   end
 
+  def favourites(%{assigns: %{user: user}} = conn, params) do
+    params = conn
+    |> Map.put("type", "Create")
+    |> Map.put("favorited_by", user.ap_id)
+
+    activities = ActivityPub.fetch_activities([], params)
+    |> Enum.reverse
+
+    conn
+    |> render(StatusView, "index.json", %{activities: activities, for: user, as: :activity})
+  end
+
   def relationship_noop(%{assigns: %{user: user}} = conn, %{"id" => id}) do
     Logger.debug("Unimplemented, returning unmodified relationship")
     with %User{} = target <- Repo.get(User, id) do