mirror of
https://github.com/discourse/discourse.git
synced 2024-12-21 10:03:47 +08:00
40 lines
927 B
Ruby
40 lines
927 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
|