FIX: Preload parent categories for sidebar (#25726)

When "lazy load categories" is enabled, only the categories present in
the sidebar are preloaded. This is insufficient because the parent
categories are necessary too for the sidebar to be rendered properly.
This commit is contained in:
Bianca Nenciu
2024-02-16 16:39:18 +02:00
committed by GitHub
parent 330cb837da
commit a24d110258
3 changed files with 49 additions and 14 deletions

View File

@ -109,7 +109,16 @@ class Site
if @guardian.can_lazy_load_categories?
preloaded_category_ids = []
if @guardian.authenticated?
preloaded_category_ids.concat(@guardian.user.secured_sidebar_category_ids(@guardian))
sidebar_category_ids = @guardian.user.secured_sidebar_category_ids(@guardian)
preloaded_category_ids.concat(
Category
.secured(@guardian)
.select(:parent_category_id)
.distinct
.where(id: sidebar_category_ids)
.pluck(:parent_category_id),
)
preloaded_category_ids.concat(sidebar_category_ids)
end
end