aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/pleroma_api
diff options
context:
space:
mode:
authorrinpatch <rinpatch@sdf.org>2019-09-29 18:43:27 +0300
committerrinpatch <rinpatch@sdf.org>2019-09-29 18:43:27 +0300
commite9d1aa75d5dc0859b692e891f6e65949208a5f0f (patch)
treede6c7854f6ca3daea830caec9d13672fe6c4ec15 /lib/pleroma/web/pleroma_api
parent6d74a7528c31e6215d808627f1c393ab53d99782 (diff)
downloadpleroma-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')
-rw-r--r--lib/pleroma/web/pleroma_api/controllers/subscription_notification_controller.ex71
-rw-r--r--lib/pleroma/web/pleroma_api/pleroma_api.ex40
-rw-r--r--lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex61
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