# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.MastodonAPI.ConversationController do
import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2]
alias Pleroma.Conversation.Participation
- alias Pleroma.Plugs.OAuthScopesPlug
alias Pleroma.Repo
+ alias Pleroma.Web.Plugs.OAuthScopesPlug
action_fallback(Pleroma.Web.MastodonAPI.FallbackController)
@doc "GET /api/v1/conversations"
def index(%{assigns: %{user: user}} = conn, params) do
- params = stringify_pagination_params(params)
participations = Participation.for_user_with_last_activity_id(user, params)
conn
end
end
- defp stringify_pagination_params(params) do
- atom_keys =
- Pleroma.Pagination.page_keys()
- |> Enum.map(&String.to_atom(&1))
-
- str_keys =
- params
- |> Map.take(atom_keys)
- |> Enum.map(fn {key, value} -> {to_string(key), value} end)
- |> Enum.into(%{})
-
- params
- |> Map.delete(atom_keys)
- |> Map.merge(str_keys)
+ @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