DEV: Live refresh all themes when watching stylesheets (#10337)

This commit is contained in:
Penar Musaraj 2020-07-30 19:03:24 -04:00 committed by GitHub
parent 3d9eb3e085
commit e6dbb4fcf5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 21 deletions

View File

@ -48,16 +48,6 @@ class ApplicationController < ActionController::Base
layout :set_layout
if Rails.env == "development"
after_action :remember_theme_id
def remember_theme_id
if @theme_ids.present? && request.format == "html"
Stylesheet::Watcher.theme_id = @theme_ids.first if defined? Stylesheet::Watcher
end
end
end
def has_escaped_fragment?
SiteSetting.enable_escaped_fragments? && params.key?("_escaped_fragment_")
end

View File

@ -4,15 +4,6 @@ require 'listen'
module Stylesheet
class Watcher
REDIS_KEY = "dev_last_used_theme_id"
def self.theme_id=(v)
Discourse.redis.set(REDIS_KEY, v)
end
def self.theme_id
(Discourse.redis.get(REDIS_KEY) || SiteSetting.default_theme_id).to_i
end
def self.watch(paths = nil)
watcher = new(paths)
@ -106,7 +97,11 @@ module Stylesheet
targets = target ? [target] : ["desktop", "mobile", "admin"]
Stylesheet::Manager.clear_core_cache!(targets)
message = targets.map! do |name|
Stylesheet::Manager.stylesheet_data(name.to_sym, Stylesheet::Watcher.theme_id)
msgs = []
active_themes.each do |theme_id|
msgs << Stylesheet::Manager.stylesheet_data(name.to_sym, theme_id)
end
msgs
end.flatten!
MessageBus.publish '/file-change', message
end
@ -118,7 +113,10 @@ module Stylesheet
targets.push("#{plugin_name}_desktop") if DiscoursePluginRegistry.stylesheets_exists?(plugin_name, :desktop)
message = targets.map! do |name|
Stylesheet::Manager.stylesheet_data(name.to_sym, Stylesheet::Watcher.theme_id)
msgs = []
active_themes.each do |theme_id|
msgs << Stylesheet::Manager.stylesheet_data(name.to_sym, theme_id)
end
end.flatten!
MessageBus.publish '/file-change', message
end
@ -144,5 +142,10 @@ module Stylesheet
end
end
end
def active_themes
@active_themes ||= Theme.user_selectable.pluck(:id)
end
end
end