Exclude deactivated users from emoji reaction lists

This commit is contained in:
FloatingGhost 2023-07-17 17:53:03 +01:00
parent 8c956bc671
commit 8fe29bf5d2
2 changed files with 17 additions and 1 deletions

View file

@ -41,6 +41,17 @@ def index(%{assigns: %{user: user}} = conn, %{id: activity_id} = params) do
end end
end end
defp filter_allowed_user_by_ap_id(ap_ids, excluded_ap_ids) do
Enum.reject(ap_ids, fn ap_id ->
with false <- ap_id in excluded_ap_ids,
%{is_active: true} <- User.get_cached_by_ap_id(ap_id) do
false
else
_ -> true
end
end)
end
def filter_allowed_users(reactions, user, with_muted) do def filter_allowed_users(reactions, user, with_muted) do
exclude_ap_ids = exclude_ap_ids =
if is_nil(user) do if is_nil(user) do
@ -51,7 +62,7 @@ def filter_allowed_users(reactions, user, with_muted) do
end end
filter_emoji = fn emoji, users, url -> filter_emoji = fn emoji, users, url ->
case Enum.reject(users, &(&1 in exclude_ap_ids)) do case filter_allowed_user_by_ap_id(users, exclude_ap_ids) do
[] -> nil [] -> nil
users -> {emoji, users, url} users -> {emoji, users, url}
end end

View file

@ -1960,6 +1960,10 @@ test "index" do
{:ok, _} = CommonAPI.react_with_emoji(activity.id, other_user, "🎅") {:ok, _} = CommonAPI.react_with_emoji(activity.id, other_user, "🎅")
User.mute(user, other_user) User.mute(user, other_user)
deactivated_user = insert(:user)
{:ok, _} = CommonAPI.react_with_emoji(activity.id, deactivated_user, "🎅")
User.set_activation(deactivated_user, false)
result = result =
conn conn
|> get("/api/v1/statuses/?ids[]=#{activity.id}") |> get("/api/v1/statuses/?ids[]=#{activity.id}")
@ -1967,6 +1971,7 @@ test "index" do
assert [ assert [
%{ %{
"emoji_reactions" => [],
"pleroma" => %{ "pleroma" => %{
"emoji_reactions" => [] "emoji_reactions" => []
} }