mirror of
https://github.com/discourse/discourse.git
synced 2024-12-12 13:43:41 +08:00
36 lines
829 B
Ruby
36 lines
829 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class Stylesheet::Manager::ScssChecker
|
||
|
def initialize(target, theme_ids)
|
||
|
@target = target.to_sym
|
||
|
@theme_ids = theme_ids
|
||
|
end
|
||
|
|
||
|
def has_scss(theme_id)
|
||
|
!!get_themes_with_scss[theme_id]
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def get_themes_with_scss
|
||
|
@themes_with_scss ||= begin
|
||
|
theme_target = @target.to_sym
|
||
|
theme_target = :mobile if theme_target == :mobile_theme
|
||
|
theme_target = :desktop if theme_target == :desktop_theme
|
||
|
name = @target == :embedded_theme ? :embedded_scss : :scss
|
||
|
|
||
|
results = Theme
|
||
|
.where(id: @theme_ids)
|
||
|
.left_joins(:theme_fields)
|
||
|
.where(theme_fields: {
|
||
|
target_id: [Theme.targets[theme_target], Theme.targets[:common]],
|
||
|
name: name
|
||
|
})
|
||
|
.group(:id)
|
||
|
.size
|
||
|
|
||
|
results
|
||
|
end
|
||
|
end
|
||
|
end
|