From e6dbb4fcf52fa74853ed45616dd7cbf620c7deca Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Thu, 30 Jul 2020 19:03:24 -0400 Subject: [PATCH] DEV: Live refresh all themes when watching stylesheets (#10337) --- app/controllers/application_controller.rb | 10 --------- lib/stylesheet/watcher.rb | 25 +++++++++++++---------- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 4bf4934c7a6..f626119901e 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -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 diff --git a/lib/stylesheet/watcher.rb b/lib/stylesheet/watcher.rb index d2d49c2ab93..f54fe1d564f 100644 --- a/lib/stylesheet/watcher.rb +++ b/lib/stylesheet/watcher.rb @@ -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