Skip to content
This repository has been archived by the owner on May 27, 2022. It is now read-only.

Commit

Permalink
FEATURE: Enable auto dark mode on new instances (discourse#14208)
Browse files Browse the repository at this point in the history
  • Loading branch information
pmusaraj authored Sep 2, 2021
1 parent ea84c66 commit 90a23c6
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 10 deletions.
8 changes: 8 additions & 0 deletions db/fixtures/600_themes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,12 @@
name = I18n.t('color_schemes.default_theme_name')
default_theme = Theme.create!(name: name, user_id: -1)
default_theme.set_default!

if SiteSetting.default_dark_mode_color_scheme_id == SiteSetting.defaults[:default_dark_mode_color_scheme_id]
dark_scheme_id = ColorScheme.where(base_scheme_id: "Dark").pluck_first(:id)

if dark_scheme_id.present?
SiteSetting.default_dark_mode_color_scheme_id = dark_scheme_id
end
end
end
16 changes: 10 additions & 6 deletions lib/wizard/builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,14 @@ def build
updater.update_setting(:base_font, updater.fields[:body_font])
updater.update_setting(:heading_font, updater.fields[:heading_font])

if updater.fields[:homepage_style] == 'latest'
top_menu = "latest|new|unread|top|categories"
else
top_menu = "categories|latest|new|unread|top"
updater.update_setting(:desktop_category_page_style, updater.fields[:homepage_style])
end
updater.update_setting(:top_menu, top_menu)

scheme_name = (
(updater.fields[:color_scheme] || "") ||
ColorScheme::LIGHT_THEME_ID
Expand All @@ -228,13 +236,9 @@ def build
theme.set_default!
end

if updater.fields[:homepage_style] == 'latest'
top_menu = "latest|new|unread|top|categories"
else
top_menu = "categories|latest|new|unread|top"
updater.update_setting(:desktop_category_page_style, updater.fields[:homepage_style])
if scheme.is_dark?
updater.update_setting(:default_dark_mode_color_scheme_id, -1)
end
updater.update_setting(:top_menu, top_menu)
end
end

Expand Down
45 changes: 41 additions & 4 deletions spec/components/wizard/step_updater_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,11 @@

context "styling step" do
it "updates fonts" do
updater = wizard.create_updater('styling', body_font: 'open_sans', heading_font: 'oswald')
updater = wizard.create_updater('styling',
body_font: 'open_sans',
heading_font: 'oswald',
homepage_style: 'latest'
)
updater.update
expect(updater.success?).to eq(true)
expect(wizard.completed_steps?('styling')).to eq(true)
Expand All @@ -182,7 +186,12 @@
fab!(:color_scheme) { Fabricate(:color_scheme, name: 'existing', via_wizard: true) }

it "updates the scheme" do
updater = wizard.create_updater('styling', color_scheme: 'Dark', body_font: 'arial', heading_font: 'arial', homepage_style: 'latest')
updater = wizard.create_updater('styling',
color_scheme: 'Dark',
body_font: 'arial',
heading_font: 'arial',
homepage_style: 'latest'
)
updater.update
expect(updater.success?).to eq(true)
expect(wizard.completed_steps?('styling')).to eq(true)
Expand Down Expand Up @@ -277,12 +286,41 @@
expect(theme.color_scheme_id).to eq(color_scheme.id)
end
end

context "auto dark mode" do
before do
dark_scheme = ColorScheme.where(name: "Dark").first
SiteSetting.default_dark_mode_color_scheme_id = dark_scheme.id
end

it "does nothing when selected scheme is light" do
updater = wizard.create_updater('styling',
color_scheme: 'Neutral',
body_font: 'arial',
heading_font: 'arial',
homepage_style: 'latest'
)

expect { updater.update }.not_to change { SiteSetting.default_dark_mode_color_scheme_id }
end

it "unsets auto dark mode site setting when default selected scheme is also dark" do
updater = wizard.create_updater('styling',
color_scheme: 'Latte',
body_font: 'arial',
heading_font: 'arial',
homepage_style: 'latest'
)

expect { updater.update }.to change { SiteSetting.default_dark_mode_color_scheme_id }.to(-1)
end
end

end

context "homepage style" do
it "updates the fields correctly" do
updater = wizard.create_updater('styling',
color_scheme: 'Dark',
body_font: 'arial',
heading_font: 'arial',
homepage_style: "categories_and_top_topics"
Expand All @@ -295,7 +333,6 @@
expect(SiteSetting.desktop_category_page_style).to eq('categories_and_top_topics')

updater = wizard.create_updater('styling',
color_scheme: 'Dark',
body_font: 'arial',
heading_font: 'arial',
homepage_style: "latest"
Expand Down

0 comments on commit 90a23c6

Please sign in to comment.