mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Ensure live-reloading of theme CSS works first time (#8052)
The client-side theme-selector would always apply the first in a series of file change notifications. This has been fixed, so it now applies the most recent notification. Duplicate notifications were being sent because - The remote_theme autosave was causing every change notification to be doubled - Color scheme change notifications were being sent every time a theme was uploaded, even if the colors were unchanged These duplicate notifications have been fixed, and a spec added to ensure it does not regress in future
This commit is contained in:
@@ -21,7 +21,7 @@ class RemoteTheme < ActiveRecord::Base
|
||||
GITHUB_REGEXP = /^https?:\/\/github\.com\//
|
||||
GITHUB_SSH_REGEXP = /^git@github\.com:/
|
||||
|
||||
has_one :theme
|
||||
has_one :theme, autosave: false
|
||||
scope :joined_remotes, -> {
|
||||
joins("JOIN themes ON themes.remote_theme_id = remote_themes.id").where.not(remote_url: "")
|
||||
}
|
||||
@@ -211,7 +211,7 @@ class RemoteTheme < ActiveRecord::Base
|
||||
color_scheme_color = scheme.color_scheme_colors.to_a.find { |c| c.name == color[:name] } ||
|
||||
scheme.color_scheme_colors.build(name: color[:name])
|
||||
color_scheme_color.hex = override || color[:hex]
|
||||
theme.notify_color_change(color_scheme_color)
|
||||
theme.notify_color_change(color_scheme_color) if color_scheme_color.hex_changed?
|
||||
end
|
||||
|
||||
# Update advanced colors
|
||||
@@ -221,7 +221,7 @@ class RemoteTheme < ActiveRecord::Base
|
||||
if override
|
||||
color_scheme_color ||= scheme.color_scheme_colors.build(name: variable_name)
|
||||
color_scheme_color.hex = override
|
||||
theme.notify_color_change(color_scheme_color)
|
||||
theme.notify_color_change(color_scheme_color) if color_scheme_color.hex_changed?
|
||||
elsif color_scheme_color # No longer specified in about.json, delete record
|
||||
scheme.color_scheme_colors.delete(color_scheme_color)
|
||||
theme.notify_color_change(nil, scheme: scheme)
|
||||
|
||||
Reference in New Issue
Block a user