discourse/app/serializers/theme_index_serializer.rb
Osama Sayegh e564ab5f63
PERF: Improve performance of the new themes listing page (#32641)
The new themes listing page at `/admin/config/customize/themes`
currently has poor performance compared to the components page
(`/admin/config/customize/components`) due to various N+1 issues,
loading all themes and components from the server when only themes are
needed, and serializing data/attributes that aren't needed for rendering
the themes grid.

This commit improves the performance by eliminating all N+1 that are
currently present, excluding components from the page payload, and
reducing the amount of data transmitted for each theme when loading the
page.
2025-05-08 19:18:07 +03:00

8 lines
326 B
Ruby

# frozen_string_literal: true
class ThemeIndexSerializer < BasicThemeSerializer
attributes :user_selectable, :screenshot_url, :remote_theme_id, :enabled?, :supported?
has_one :color_scheme, serializer: ColorSchemeSerializer, embed: :object
has_one :remote_theme, serializer: RemoteThemeSerializer, embed: :objects
end