FIX: Live reload plugin stylesheets when the color scheme changes

FIX: Live reload plugin stylesheets when the color scheme changes

diff --git a/app/models/theme.rb b/app/models/theme.rb
index c4bda99..613af20 100644
--- a/app/models/theme.rb
+++ b/app/models/theme.rb
@@ -264,6 +264,7 @@ class Theme < ActiveRecord::Base
 
     if with_scheme
       targets.prepend(:desktop, :mobile, :admin)
+      targets.append(*Discourse.find_plugin_css_assets(mobile_view: true, desktop_view: true))
       Stylesheet::Manager.cache.clear if clear_manager_cache
     end
 
diff --git a/app/views/common/_discourse_stylesheet.html.erb b/app/views/common/_discourse_stylesheet.html.erb
index 690f3a2..b6f6411 100644
--- a/app/views/common/_discourse_stylesheet.html.erb
+++ b/app/views/common/_discourse_stylesheet.html.erb
@@ -12,6 +12,6 @@
   <%= discourse_stylesheet_link_tag(mobile_view? ? :mobile_theme : :desktop_theme) %>
 <%- end %>
 
-<%- Discourse.find_plugin_css_assets(include_official: allow_plugins?, include_unofficial: allow_third_party_plugins?, mobile_view: mobile_view?).each do |file| %>
+<%- Discourse.find_plugin_css_assets(include_official: allow_plugins?, include_unofficial: allow_third_party_plugins?, mobile_view: mobile_view?, desktop_view: !mobile_view?).each do |file| %>
   <%= discourse_stylesheet_link_tag(file) %>
 <%- end %>
diff --git a/lib/discourse.rb b/lib/discourse.rb
index d44f028..ca603be 100644
--- a/lib/discourse.rb
+++ b/lib/discourse.rb
@@ -217,14 +217,19 @@ module Discourse
   def self.find_plugin_css_assets(args)
     plugins = self.find_plugins(args)
 
-    assets = plugins.find_all do |plugin|
-      plugin.css_asset_exists?
-    end.map { |plugin| plugin.directory_name }
-
-    target = args[:mobile_view] ? :mobile : :desktop
-    assets += plugins.find_all do |plugin|
-      plugin.css_asset_exists?(target)
-    end.map { |plugin| "#{plugin.directory_name}_#{target}" }
+    assets = []
+
+    targets = [nil]
+    targets << :mobile if args[:mobile_view]
+    targets << :desktop if args[:desktop_view]
+
+    targets.each do |target|
+      assets += plugins.find_all do |plugin|
+        plugin.css_asset_exists?(target)
+      end.map do |plugin|
+        target.nil? ? plugin.directory_name : "#{plugin.directory_name}_#{target}"
+      end
+    end
 
     assets
   end

GitHub sha: 3da9b99d

1 Like