FIX: properly load desktop and mobile only plugin css assets.

FIX: properly load desktop and mobile only plugin css assets.

5bd6b70d985e2736f56d2bec6cce56bee0227b1f

diff --git a/app/views/common/_discourse_stylesheet.html.erb b/app/views/common/_discourse_stylesheet.html.erb
index d16cb7c..690f3a2 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?).each do |file| %>
+<%- Discourse.find_plugin_css_assets(include_official: allow_plugins?, include_unofficial: allow_third_party_plugins?, mobile_view: mobile_view?).each do |file| %>
   <%= discourse_stylesheet_link_tag(file) %>
 <%- end %>
diff --git a/lib/discourse.rb b/lib/discourse.rb
index fb19a77..86efda5 100644
--- a/lib/discourse.rb
+++ b/lib/discourse.rb
@@ -215,9 +215,18 @@ module Discourse
   end
 
   def self.find_plugin_css_assets(args)
-    self.find_plugins(args).find_all do |plugin|
+    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
   end
 
   def self.find_plugin_js_assets(args)
diff --git a/lib/discourse_plugin_registry.rb b/lib/discourse_plugin_registry.rb
index f8111ed..800b936 100644
--- a/lib/discourse_plugin_registry.rb
+++ b/lib/discourse_plugin_registry.rb
@@ -183,8 +183,15 @@ class DiscoursePluginRegistry
     end
   end
 
-  def self.stylesheets_exists?(plugin_directory_name)
-    self.stylesheets[plugin_directory_name].present? || self.mobile_stylesheets[plugin_directory_name].present? || self.desktop_stylesheets[plugin_directory_name].present?
+  def self.stylesheets_exists?(plugin_directory_name, target = nil)
+    case target
+    when :desktop
+      self.desktop_stylesheets[plugin_directory_name].present?
+    when :mobile
+      self.mobile_stylesheets[plugin_directory_name].present?
+    else
+      self.stylesheets[plugin_directory_name].present?
+    end
   end
 
   def self.register_seed_data(key, value)
diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb
index b8158fa..3c45aa7 100644
--- a/lib/plugin/instance.rb
+++ b/lib/plugin/instance.rb
@@ -658,8 +658,8 @@ class Plugin::Instance
     @directory_name ||= File.dirname(path).split("/").last
   end
 
-  def css_asset_exists?
-    DiscoursePluginRegistry.stylesheets_exists?(directory_name)
+  def css_asset_exists?(target = nil)
+    DiscoursePluginRegistry.stylesheets_exists?(directory_name, target)
   end
 
   def js_asset_exists?

GitHub sha: 41f22946

2 Likes

SPEC: fix the discourse_plugin_registry spec.