aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-12-17 17:00:46 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-12-17 17:00:46 +0700
commit6c39fa20b191f985a2be704089c20acbcfe0035a (patch)
tree64b14a36927368cbe44fbec7c210e5372b7a0dc5 /lib
parent38ad407395e838ddf1c11922806adc080af44d36 (diff)
downloadpleroma-6c39fa20b191f985a2be704089c20acbcfe0035a.tar.gz
Add support for `account_id` param to filter notifications by the account
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/mastodon_api/mastodon_api.ex11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/pleroma/web/mastodon_api/mastodon_api.ex b/lib/pleroma/web/mastodon_api/mastodon_api.ex
index b1816370e..6c13d4df6 100644
--- a/lib/pleroma/web/mastodon_api/mastodon_api.ex
+++ b/lib/pleroma/web/mastodon_api/mastodon_api.ex
@@ -56,6 +56,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do
user
|> Notification.for_user_query(options)
|> restrict(:exclude_types, options)
+ |> restrict(:account_id, options)
|> Pagination.fetch_paginated(params)
end
@@ -71,7 +72,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do
exclude_visibilities: {:array, :string},
reblogs: :boolean,
with_muted: :boolean,
- with_move: :boolean
+ with_move: :boolean,
+ account_id: :string
}
changeset = cast({%{}, param_types}, params, Map.keys(param_types))
@@ -88,5 +90,12 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do
|> where([q, a], not fragment("? @> ARRAY[?->>'type']::varchar[]", ^ap_types, a.data))
end
+ defp restrict(query, :account_id, %{account_id: account_id}) do
+ case User.get_cached_by_id(account_id) do
+ %{ap_id: ap_id} -> where(query, [n, a], a.actor == ^ap_id)
+ _ -> where(query, [n, a], a.actor == "fake ap id")
+ end
+ end
+
defp restrict(query, _, _), do: query
end