diff options
author | rinpatch <rin@patch.cx> | 2021-02-17 15:14:27 +0000 |
---|---|---|
committer | rinpatch <rin@patch.cx> | 2021-02-17 15:14:27 +0000 |
commit | 158f9f18ee61fda5371ee62314c46da90b57eb5a (patch) | |
tree | 866d598011ffb17f8b8e193fbf5d3829e3e20833 /lib/pleroma/web | |
parent | 264cb2c77f51d0caacffa6e84f631cec1131eec5 (diff) | |
parent | cf6d3db58f20de5224fa77dbf902e78a653ced96 (diff) | |
download | pleroma-158f9f18ee61fda5371ee62314c46da90b57eb5a.tar.gz |
Merge branch 'remove-conversation-api' into 'develop'
Add API endpoint to remove a conversation
Closes #2488
See merge request pleroma/pleroma!3321
Diffstat (limited to 'lib/pleroma/web')
-rw-r--r-- | lib/pleroma/web/api_spec/operations/conversation_operation.ex | 27 | ||||
-rw-r--r-- | lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex | 9 | ||||
-rw-r--r-- | lib/pleroma/web/router.ex | 1 |
3 files changed, 31 insertions, 6 deletions
diff --git a/lib/pleroma/web/api_spec/operations/conversation_operation.ex b/lib/pleroma/web/api_spec/operations/conversation_operation.ex index 367f4125a..17ed1af5e 100644 --- a/lib/pleroma/web/api_spec/operations/conversation_operation.ex +++ b/lib/pleroma/web/api_spec/operations/conversation_operation.ex @@ -46,16 +46,31 @@ defmodule Pleroma.Web.ApiSpec.ConversationOperation do tags: ["Conversations"], summary: "Mark conversation as read", operationId: "ConversationController.mark_as_read", - parameters: [ - Operation.parameter(:id, :path, :string, "Conversation ID", - example: "123", - required: true - ) - ], + parameters: [id_param()], security: [%{"oAuth" => ["write:conversations"]}], responses: %{ 200 => Operation.response("Conversation", "application/json", Conversation) } } end + + def delete_operation do + %Operation{ + tags: ["Conversations"], + summary: "Remove conversation", + operationId: "ConversationController.delete", + parameters: [id_param()], + security: [%{"oAuth" => ["write:conversations"]}], + responses: %{ + 200 => empty_object_response() + } + } + end + + def id_param do + Operation.parameter(:id, :path, :string, "Conversation ID", + example: "123", + required: true + ) + end end diff --git a/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex b/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex index 4526d3c7a..f2a0949e8 100644 --- a/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex @@ -36,4 +36,13 @@ defmodule Pleroma.Web.MastodonAPI.ConversationController do render(conn, "participation.json", participation: participation, for: user) end end + + @doc "DELETE /api/v1/conversations/:id" + def delete(%{assigns: %{user: user}} = conn, %{id: participation_id}) do + with %Participation{} = participation <- + Repo.get_by(Participation, id: participation_id, user_id: user.id), + {:ok, _} <- Participation.delete(participation) do + json(conn, %{}) + end + end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 297f03fbd..e71686d31 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -443,6 +443,7 @@ defmodule Pleroma.Web.Router do get("/conversations", ConversationController, :index) post("/conversations/:id/read", ConversationController, :mark_as_read) + delete("/conversations/:id", ConversationController, :delete) get("/domain_blocks", DomainBlockController, :index) post("/domain_blocks", DomainBlockController, :create) |