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

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

diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 4bf4934..f626119 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 d2d49c2..f54fe1d 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

GitHub sha: e6dbb4fc

This commit appears in #10337 which was approved by eviltrout. It was merged by pmusaraj.