From 64986244d7400012ab4271f0d005fa04dddecf1f Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Tue, 31 Jan 2023 09:09:03 -0700 Subject: [PATCH] DEV: Change default bootstrap min users for private sites (#19810) * DEV: Change default bootstrap min users for private sites Private sites should have a lower min users to escape bootstrap mode. * reset back to 50 if site is changed to public, added some tests * fix formatting * Remove comment * Move constant declaration * Update config/initializers/014-track-setting-changes.rb Shaving a bit of repetition Co-authored-by: Jarek Radosz * Remove commented out code * stree --------- Co-authored-by: Jarek Radosz --- .../initializers/014-track-setting-changes.rb | 16 +++++++++++ spec/lib/site_setting_extension_spec.rb | 28 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/config/initializers/014-track-setting-changes.rb b/config/initializers/014-track-setting-changes.rb index 410b8091d70..7872dcd129b 100644 --- a/config/initializers/014-track-setting-changes.rb +++ b/config/initializers/014-track-setting-changes.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +PRIVATE_BOOTSTRAP_MODE_MIN_USERS = 10 + DiscourseEvent.on(:site_setting_changed) do |name, old_value, new_value| Category.clear_subcategory_ids if name === :max_category_nesting @@ -29,6 +31,20 @@ DiscourseEvent.on(:site_setting_changed) do |name, old_value, new_value| end end + # Set bootstrap min users for private sites to a lower default + if name == :login_required && SiteSetting.bootstrap_mode_enabled == true + if new_value == true && + SiteSetting.bootstrap_mode_min_users == SiteSetting.defaults.get(:bootstrap_mode_min_users) + SiteSetting.bootstrap_mode_min_users = PRIVATE_BOOTSTRAP_MODE_MIN_USERS + end + + # Set bootstrap min users for public sites back to the default + if new_value == false && + SiteSetting.bootstrap_mode_min_users == PRIVATE_BOOTSTRAP_MODE_MIN_USERS + SiteSetting.bootstrap_mode_min_users = SiteSetting.defaults.get(:bootstrap_mode_min_users) + end + end + Stylesheet::Manager.clear_color_scheme_cache! if %i[base_font heading_font].include?(name) Report.clear_cache(:storage_stats) if %i[backup_location s3_backup_bucket].include?(name) diff --git a/spec/lib/site_setting_extension_spec.rb b/spec/lib/site_setting_extension_spec.rb index d1e84a032fa..dfc5670356c 100644 --- a/spec/lib/site_setting_extension_spec.rb +++ b/spec/lib/site_setting_extension_spec.rb @@ -178,6 +178,34 @@ RSpec.describe SiteSettingExtension do end end + describe "DiscourseEvent for login_required changed to true" do + before do + SiteSetting.login_required = false + SiteSetting.bootstrap_mode_min_users = 50 + SiteSetting.bootstrap_mode_enabled = true + end + + it "lowers bootstrap mode min users for private sites" do + SiteSetting.login_required = true + + expect(SiteSetting.bootstrap_mode_min_users).to eq(10) + end + end + + describe "DiscourseEvent for login_required changed to false" do + before do + SiteSetting.login_required = true + SiteSetting.bootstrap_mode_min_users = 50 + SiteSetting.bootstrap_mode_enabled = true + end + + it "resets bootstrap mode min users for public sites" do + SiteSetting.login_required = false + + expect(SiteSetting.bootstrap_mode_min_users).to eq(50) + end + end + describe "int setting" do before do settings.setting(:test_setting, 77)