Add support for account_id param to filter notifications by the account

This commit is contained in:
Egor Kislitsyn 2019-12-17 17:00:46 +07:00
commit 6c39fa20b1
No known key found for this signature in database
GPG key ID: 1B49CB15B71E7805
3 changed files with 34 additions and 1 deletions

View file

@ -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