Add back /api/qvitter/statuses/notifications/read.json
authorrinpatch <rinpatch@sdf.org>
Sat, 31 Aug 2019 08:40:04 +0000 (11:40 +0300)
committerrinpatch <rinpatch@sdf.org>
Sat, 31 Aug 2019 08:43:06 +0000 (11:43 +0300)
lib/pleroma/web/router.ex
lib/pleroma/web/twitter_api/twitter_api_controller.ex

index 53728e298d1be3f24578df088dc510eb6de4a324..eb7cbbc96b79f74743b88d9c523faf2115cd81ec 100644 (file)
@@ -495,6 +495,12 @@ defmodule Pleroma.Web.Router do
 
     get("/oauth_tokens", TwitterAPI.Controller, :oauth_tokens)
     delete("/oauth_tokens/:id", TwitterAPI.Controller, :revoke_token)
+
+    scope [] do
+      pipe_through(:oauth_read)
+
+      post("/qvitter/statuses/notifications/read", TwitterAPI.Controller, :notifications_read)
+    end
   end
 
   pipeline :ap_service_actor do
index 1c3b11a57174649ca4941bf4ad724198a0392869..8ca754b51838a3150068042faaa54370b448e064 100644 (file)
@@ -7,6 +7,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
 
   alias Ecto.Changeset
   alias Pleroma.User
+  alias Pleroma.Notification
   alias Pleroma.Web.OAuth.Token
   alias Pleroma.Web.TwitterAPI.TokenView
 
@@ -58,4 +59,28 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
     |> put_resp_content_type("application/json")
     |> send_resp(status, json)
   end
+
+  def notifications_read(%{assigns: %{user: user}} = conn, %{"latest_id" => latest_id} = params) do
+    Notification.set_read_up_to(user, latest_id)
+
+    notifications = Notification.for_user(user, params)
+
+    conn
+    # XXX: This is a hack because pleroma-fe still uses that API.
+    |> put_view(Pleroma.Web.MastodonAPI.NotificationView)
+    |> render("index.json", %{notifications: notifications, for: user})
+  end
+
+  def notifications_read(%{assigns: %{user: _user}} = conn, _) do
+    bad_request_reply(conn, "You need to specify latest_id")
+  end
+
+  defp bad_request_reply(conn, error_message) do
+    json = error_json(conn, error_message)
+    json_reply(conn, 400, json)
+  end
+
+  defp error_json(conn, error_message) do
+    %{"error" => error_message, "request" => conn.request_path} |> Jason.encode!()
+  end
 end