summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTusooa Zhu <tusooa@kazv.moe>2022-03-08 16:59:20 -0500
committerTusooa Zhu <tusooa@kazv.moe>2022-03-08 16:59:20 -0500
commit2b39b36e490fc1222d8f3d737cb26e62af294e03 (patch)
tree458257e58a409c11ef615abf2d7f39277a4850bc /lib
parentaa1fff279e98c6d16095538382413d3b870cee2b (diff)
downloadpleroma-2b39b36e490fc1222d8f3d737cb26e62af294e03.tar.gz
pleroma-2b39b36e490fc1222d8f3d737cb26e62af294e03.zip
Implement POST /api/v1/announcements/:id/dismiss
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/api_spec/operations/announcement_operation.ex2
-rw-r--r--lib/pleroma/web/mastodon_api/controllers/announcement_controller.ex18
2 files changed, 13 insertions, 7 deletions
diff --git a/lib/pleroma/web/api_spec/operations/announcement_operation.ex b/lib/pleroma/web/api_spec/operations/announcement_operation.ex
index f99b0c263..c33b9e135 100644
--- a/lib/pleroma/web/api_spec/operations/announcement_operation.ex
+++ b/lib/pleroma/web/api_spec/operations/announcement_operation.ex
@@ -61,7 +61,7 @@ defmodule Pleroma.Web.ApiSpec.AnnouncementOperation do
)
],
responses: %{
- 200 => Operation.response("Response", "application/json", Announcement),
+ 200 => Operation.response("Response", "application/json", %Schema{type: :object}),
403 => Operation.response("Forbidden", "application/json", ApiError),
404 => Operation.response("Not Found", "application/json", ApiError)
}
diff --git a/lib/pleroma/web/mastodon_api/controllers/announcement_controller.ex b/lib/pleroma/web/mastodon_api/controllers/announcement_controller.ex
index 528d14adc..c51c38d5e 100644
--- a/lib/pleroma/web/mastodon_api/controllers/announcement_controller.ex
+++ b/lib/pleroma/web/mastodon_api/controllers/announcement_controller.ex
@@ -5,10 +5,10 @@
defmodule Pleroma.Web.MastodonAPI.AnnouncementController do
use Pleroma.Web, :controller
- # import Pleroma.Web.ControllerHelper,
- # only: [
- # json_response: 3
- # ]
+ import Pleroma.Web.ControllerHelper,
+ only: [
+ json_response: 3
+ ]
alias Pleroma.Announcement
alias Pleroma.Web.Plugs.OAuthScopesPlug
@@ -50,8 +50,14 @@ defmodule Pleroma.Web.MastodonAPI.AnnouncementController do
end
@doc "POST /api/v1/announcements/:id/dismiss"
- def mark_read(_conn, _params) do
- {:error, :not_found}
+ def mark_read(%{assigns: %{user: user}} = conn, %{id: id} = _params) do
+ with announcement when not is_nil(announcement) <- Announcement.get_by_id(id),
+ {:ok, _} <- Announcement.mark_read_by(announcement, user) do
+ json_response(conn, :ok, %{})
+ else
+ _ ->
+ {:error, :not_found}
+ end
end
@doc "POST /api/v1/announcements/:id"