diff options
author | rinpatch <rinpatch@sdf.org> | 2019-09-29 18:43:27 +0300 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2019-09-29 18:43:27 +0300 |
commit | e9d1aa75d5dc0859b692e891f6e65949208a5f0f (patch) | |
tree | de6c7854f6ca3daea830caec9d13672fe6c4ec15 /lib/pleroma/web/pleroma_api | |
parent | 6d74a7528c31e6215d808627f1c393ab53d99782 (diff) | |
download | pleroma-e9d1aa75d5dc0859b692e891f6e65949208a5f0f.tar.gz |
Revert subscription refactoring.
As discussed in pleroma-meta#2
This reverts commit eb9aa7aa1095de150d036839c78c402019efb4b1, reversing
changes made to c4fbb56984d8f86df948cfd9b0f7c081d688c365.
Diffstat (limited to 'lib/pleroma/web/pleroma_api')
3 files changed, 0 insertions, 172 deletions
diff --git a/lib/pleroma/web/pleroma_api/controllers/subscription_notification_controller.ex b/lib/pleroma/web/pleroma_api/controllers/subscription_notification_controller.ex deleted file mode 100644 index 37c2222de..000000000 --- a/lib/pleroma/web/pleroma_api/controllers/subscription_notification_controller.ex +++ /dev/null @@ -1,71 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.PleromaAPI.SubscriptionNotificationController do - use Pleroma.Web, :controller - - import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2] - - alias Pleroma.Activity - alias Pleroma.SubscriptionNotification - alias Pleroma.User - alias Pleroma.Web.PleromaAPI.PleromaAPI - - def index(%{assigns: %{user: user}} = conn, params) do - notifications = - user - |> PleromaAPI.get_subscription_notifications(params) - |> Enum.map(&build_notification_data/1) - - conn - |> add_link_headers(notifications) - |> render("index.json", %{notifications: notifications, for: user}) - end - - def show(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do - with {:ok, notification} <- SubscriptionNotification.get(user, id) do - render(conn, "show.json", %{ - subscription_notification: build_notification_data(notification), - for: user - }) - else - {:error, reason} -> - conn - |> put_status(:forbidden) - |> json(%{"error" => reason}) - end - end - - def clear(%{assigns: %{user: user}} = conn, _params) do - SubscriptionNotification.clear(user) - json(conn, %{}) - end - - def dismiss(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do - with {:ok, _notif} <- SubscriptionNotification.dismiss(user, id) do - json(conn, %{}) - else - {:error, reason} -> - conn - |> put_status(:forbidden) - |> json(%{"error" => reason}) - end - end - - def destroy_multiple( - %{assigns: %{user: user}} = conn, - %{"ids" => ids} = _params - ) do - SubscriptionNotification.destroy_multiple(user, ids) - json(conn, %{}) - end - - defp build_notification_data(%{activity: %{data: data}} = notification) do - %{ - notification: notification, - actor: User.get_cached_by_ap_id(data["actor"]), - parent_activity: Activity.get_create_by_object_ap_id(data["object"]) - } - end -end diff --git a/lib/pleroma/web/pleroma_api/pleroma_api.ex b/lib/pleroma/web/pleroma_api/pleroma_api.ex deleted file mode 100644 index 480964845..000000000 --- a/lib/pleroma/web/pleroma_api/pleroma_api.ex +++ /dev/null @@ -1,40 +0,0 @@ -defmodule Pleroma.Web.PleromaAPI.PleromaAPI do - import Ecto.Query - import Ecto.Changeset - - alias Pleroma.Activity - alias Pleroma.Pagination - alias Pleroma.SubscriptionNotification - - def get_subscription_notifications(user, params \\ %{}) do - options = cast_params(params) - - user - |> SubscriptionNotification.for_user_query(options) - |> restrict(:exclude_types, options) - |> Pagination.fetch_paginated(params) - end - - defp cast_params(params) do - param_types = %{ - exclude_types: {:array, :string}, - reblogs: :boolean, - with_muted: :boolean - } - - changeset = cast({%{}, param_types}, params, Map.keys(param_types)) - changeset.changes - end - - defp restrict(query, :exclude_types, %{exclude_types: mastodon_types = [_ | _]}) do - ap_types = - mastodon_types - |> Enum.map(&Activity.from_mastodon_notification_type/1) - |> Enum.filter(& &1) - - query - |> where([q, a], not fragment("? @> ARRAY[?->>'type']::varchar[]", ^ap_types, a.data)) - end - - defp restrict(query, _, _), do: query -end diff --git a/lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex b/lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex deleted file mode 100644 index fc41a7389..000000000 --- a/lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex +++ /dev/null @@ -1,61 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.PleromaAPI.SubscriptionNotificationView do - use Pleroma.Web, :view - - alias Pleroma.Activity - alias Pleroma.Web.CommonAPI - alias Pleroma.Web.MastodonAPI.AccountView - alias Pleroma.Web.MastodonAPI.StatusView - alias Pleroma.Web.PleromaAPI.SubscriptionNotificationView - - def render("index.json", %{notifications: notifications, for: user}) do - safe_render_many(notifications, SubscriptionNotificationView, "show.json", %{for: user}) - end - - def render("show.json", %{ - subscription_notification: %{ - notification: %{activity: activity} = notification, - actor: actor, - parent_activity: parent_activity - }, - for: user - }) do - mastodon_type = Activity.mastodon_notification_type(activity) - - response = %{ - id: to_string(notification.id), - type: mastodon_type, - created_at: CommonAPI.Utils.to_masto_date(notification.inserted_at), - account: AccountView.render("account.json", %{user: actor, for: user}) - } - - case mastodon_type do - "mention" -> - response - |> Map.merge(%{ - status: StatusView.render("show.json", %{activity: activity, for: user}) - }) - - "favourite" -> - response - |> Map.merge(%{ - status: StatusView.render("show.json", %{activity: parent_activity, for: user}) - }) - - "reblog" -> - response - |> Map.merge(%{ - status: StatusView.render("show.json", %{activity: parent_activity, for: user}) - }) - - "follow" -> - response - - _ -> - nil - end - end -end |