mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-18 10:04:00 +08:00
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.
8 lines
326 B
Ruby
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
|