From 5c925f2db3cae7e67dfdbe6e6853ab57e13447f7 Mon Sep 17 00:00:00 2001 From: Blake Erickson Date: Tue, 13 Dec 2022 17:25:19 -0700 Subject: [PATCH] FEATURE: Chat and Sidebar are now on by default (#19406) FEATURE: Chat and Sidebar are now on by default - Set the sidebar site setting to be enabled by default - Set the chat site setting to be enabled by default - Updated existing specs that assumed the original default - Use a migration to keep old defaults for existing sites --- .../acceptance/enforce-second-factor-test.js | 3 ++ .../tests/acceptance/hamburger-menu-test.js | 8 ++++- .../acceptance/opengraph-tag-updater-test.js | 3 ++ config/site_settings.yml | 2 +- .../20221212225921_enable_sidebar_and_chat.rb | 30 +++++++++++++++++++ plugins/chat/config/settings.yml | 2 +- .../email_chat_notifications_spec.rb | 2 ++ plugins/chat/spec/system/sidebars_spec.rb | 1 + .../chat-live-pane-silenced-user-test.js | 1 + .../acceptance/chat-live-pane-test.js | 2 ++ .../acceptance/chat-status-test.js | 1 + spec/jobs/notify_reviewable_spec.rb | 1 + spec/models/topic_tracking_state_spec.rb | 2 ++ spec/requests/api/users_spec.rb | 1 + .../topic_tracking_state_serializer_spec.rb | 5 ++++ .../web_hook_user_serializer_spec.rb | 5 ++++ 16 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20221212225921_enable_sidebar_and_chat.rb diff --git a/app/assets/javascripts/discourse/tests/acceptance/enforce-second-factor-test.js b/app/assets/javascripts/discourse/tests/acceptance/enforce-second-factor-test.js index 0341ccddd1..95aeecf176 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/enforce-second-factor-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/enforce-second-factor-test.js @@ -25,6 +25,9 @@ acceptance("Enforce Second Factor", function (needs) { }); }); }); + needs.settings({ + navigation_menu: "legacy", + }); test("as an admin", async function (assert) { await visit("/u/eviltrout/preferences/second-factor"); diff --git a/app/assets/javascripts/discourse/tests/acceptance/hamburger-menu-test.js b/app/assets/javascripts/discourse/tests/acceptance/hamburger-menu-test.js index 364118c49e..76ba93d5a9 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/hamburger-menu-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/hamburger-menu-test.js @@ -14,6 +14,9 @@ acceptance( needs.pretender((server, helper) => { server.get("/review/count.json", () => helper.response({ count: 3 })); }); + needs.settings({ + navigation_menu: "legacy", + }); test("As a staff member", async function (assert) { updateCurrentUser({ moderator: true, admin: false }); @@ -28,7 +31,10 @@ acceptance( } ); -acceptance("Hamburger Menu accessibility", function () { +acceptance("Hamburger Menu accessibility", function (needs) { + needs.settings({ + navigation_menu: "legacy", + }); test("Escape key closes hamburger menu", async function (assert) { await visit("/"); await click("#toggle-hamburger-menu"); diff --git a/app/assets/javascripts/discourse/tests/acceptance/opengraph-tag-updater-test.js b/app/assets/javascripts/discourse/tests/acceptance/opengraph-tag-updater-test.js index 622c183a71..9018b2a3c3 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/opengraph-tag-updater-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/opengraph-tag-updater-test.js @@ -8,6 +8,9 @@ acceptance("Opengraph Tag Updater", function (needs) { return helper.response({}); }); }); + needs.settings({ + navigation_menu: "legacy", + }); test("updates OG title and URL", async function (assert) { await visit("/"); diff --git a/config/site_settings.yml b/config/site_settings.yml index 030192af47..189babb91a 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -2060,7 +2060,7 @@ developer: navigation: navigation_menu: client: true - default: "legacy" + default: "sidebar" type: enum enum: "NavigationMenuSiteSetting" default_sidebar_categories: diff --git a/db/migrate/20221212225921_enable_sidebar_and_chat.rb b/db/migrate/20221212225921_enable_sidebar_and_chat.rb new file mode 100644 index 0000000000..0edf7a46da --- /dev/null +++ b/db/migrate/20221212225921_enable_sidebar_and_chat.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class EnableSidebarAndChat < ActiveRecord::Migration[7.0] + def up + result = execute <<~SQL + SELECT created_at + FROM schema_migration_details + ORDER BY created_at + LIMIT 1 + SQL + + # keep sidebar legacy and chat disabled for for existing sites + if result.first['created_at'].to_datetime < 1.hour.ago + execute <<~SQL + INSERT INTO site_settings(name, data_type, value, created_at, updated_at) + VALUES('chat_enabled', 5, 'f', NOW(), NOW()) + ON CONFLICT (name) DO NOTHING + SQL + execute <<~SQL + INSERT INTO site_settings(name, data_type, value, created_at, updated_at) + VALUES('navigation_menu', 7, 'legacy', NOW(), NOW()) + ON CONFLICT (name) DO NOTHING + SQL + end + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end diff --git a/plugins/chat/config/settings.yml b/plugins/chat/config/settings.yml index 36e9fd597b..072e9d9792 100644 --- a/plugins/chat/config/settings.yml +++ b/plugins/chat/config/settings.yml @@ -1,6 +1,6 @@ chat: chat_enabled: - default: false + default: true client: true chat_allowed_groups: client: true diff --git a/plugins/chat/spec/jobs/scheduled/email_chat_notifications_spec.rb b/plugins/chat/spec/jobs/scheduled/email_chat_notifications_spec.rb index 0741a655c3..c061288aab 100644 --- a/plugins/chat/spec/jobs/scheduled/email_chat_notifications_spec.rb +++ b/plugins/chat/spec/jobs/scheduled/email_chat_notifications_spec.rb @@ -14,6 +14,8 @@ describe Jobs::EmailChatNotifications do end context "when chat is not enabled" do + before { SiteSetting.chat_enabled = false } + it "does nothing" do Chat::ChatMailer.expects(:send_unread_mentions_summary).never diff --git a/plugins/chat/spec/system/sidebars_spec.rb b/plugins/chat/spec/system/sidebars_spec.rb index cfded835d0..808974d874 100644 --- a/plugins/chat/spec/system/sidebars_spec.rb +++ b/plugins/chat/spec/system/sidebars_spec.rb @@ -12,6 +12,7 @@ RSpec.describe "Navigation", type: :system, js: true do before do chat_system_bootstrap(user, [category_channel, category_channel_2]) sign_in(user) + SiteSetting.navigation_menu = "legacy" end context "when sidebar is enabled as the navigation menu" do diff --git a/plugins/chat/test/javascripts/acceptance/chat-live-pane-silenced-user-test.js b/plugins/chat/test/javascripts/acceptance/chat-live-pane-silenced-user-test.js index 06e9bd0bd6..6b15f56543 100644 --- a/plugins/chat/test/javascripts/acceptance/chat-live-pane-silenced-user-test.js +++ b/plugins/chat/test/javascripts/acceptance/chat-live-pane-silenced-user-test.js @@ -15,6 +15,7 @@ acceptance("Discourse Chat - Chat live pane", function (needs) { }); needs.settings({ chat_enabled: true, + navigation_menu: "legacy", }); needs.pretender((server, helper) => { server.get("/chat/:chatChannelId/messages.json", () => diff --git a/plugins/chat/test/javascripts/acceptance/chat-live-pane-test.js b/plugins/chat/test/javascripts/acceptance/chat-live-pane-test.js index 038bf6788f..16d31f0619 100644 --- a/plugins/chat/test/javascripts/acceptance/chat-live-pane-test.js +++ b/plugins/chat/test/javascripts/acceptance/chat-live-pane-test.js @@ -37,6 +37,7 @@ acceptance( }); needs.settings({ chat_enabled: true, + navigation_menu: "legacy", }); let loadAllMessages = false; @@ -195,6 +196,7 @@ acceptance( }); needs.settings({ chat_enabled: true, + navigation_menu: "legacy", }); needs.pretender((server, helper) => { diff --git a/plugins/chat/test/javascripts/acceptance/chat-status-test.js b/plugins/chat/test/javascripts/acceptance/chat-status-test.js index 31df31bebd..e805d5eeb9 100644 --- a/plugins/chat/test/javascripts/acceptance/chat-status-test.js +++ b/plugins/chat/test/javascripts/acceptance/chat-status-test.js @@ -61,6 +61,7 @@ acceptance( needs.settings({ chat_enabled: true, chat_allow_archiving_channels: true, + navigation_menu: "legacy", }); needs.pretender((server, helper) => { diff --git a/spec/jobs/notify_reviewable_spec.rb b/spec/jobs/notify_reviewable_spec.rb index 3e0864a570..fe7c46bd98 100644 --- a/spec/jobs/notify_reviewable_spec.rb +++ b/spec/jobs/notify_reviewable_spec.rb @@ -168,6 +168,7 @@ RSpec.describe Jobs::NotifyReviewable do end it "respects priority" do + SiteSetting.navigation_menu = "legacy" SiteSetting.enable_category_group_moderation = true Reviewable.set_priorities(medium: 2.0) SiteSetting.reviewable_default_visibility = 'medium' diff --git a/spec/models/topic_tracking_state_spec.rb b/spec/models/topic_tracking_state_spec.rb index d382f8f2a3..e3e271a621 100644 --- a/spec/models/topic_tracking_state_spec.rb +++ b/spec/models/topic_tracking_state_spec.rb @@ -594,6 +594,7 @@ RSpec.describe TopicTrackingState do end it "includes tags when SiteSetting.navigation_menu is not legacy" do + SiteSetting.navigation_menu = "legacy" report = TopicTrackingState.report(user) expect(report.length).to eq(1) row = report[0] @@ -608,6 +609,7 @@ RSpec.describe TopicTrackingState do end it "includes tags when TopicTrackingState.include_tags_in_report option is enabled" do + SiteSetting.navigation_menu = "legacy" report = TopicTrackingState.report(user) expect(report.length).to eq(1) row = report[0] diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb index 8e7acc37b5..a11864bd63 100644 --- a/spec/requests/api/users_spec.rb +++ b/spec/requests/api/users_spec.rb @@ -9,6 +9,7 @@ RSpec.describe 'users' do before do SiteSetting.tagging_enabled = true + SiteSetting.navigation_menu = "legacy" Jobs.run_immediately! sign_in(admin) end diff --git a/spec/serializers/topic_tracking_state_serializer_spec.rb b/spec/serializers/topic_tracking_state_serializer_spec.rb index 2db544188e..91b679d1bd 100644 --- a/spec/serializers/topic_tracking_state_serializer_spec.rb +++ b/spec/serializers/topic_tracking_state_serializer_spec.rb @@ -4,6 +4,11 @@ RSpec.describe TopicTrackingStateSerializer do fab!(:user) { Fabricate(:user) } fab!(:post) { create_post } + before do + SiteSetting.navigation_menu = "legacy" + SiteSetting.chat_enabled = false if defined?(::Chat) + end + it 'serializes topic tracking state reports' do report = TopicTrackingState.report(user) serialized = described_class.new(report[0], scope: Guardian.new(user), root: false).as_json diff --git a/spec/serializers/web_hook_user_serializer_spec.rb b/spec/serializers/web_hook_user_serializer_spec.rb index 43ec7d8ebc..f671c172a8 100644 --- a/spec/serializers/web_hook_user_serializer_spec.rb +++ b/spec/serializers/web_hook_user_serializer_spec.rb @@ -13,6 +13,11 @@ RSpec.describe WebHookUserSerializer do WebHookUserSerializer.new(user, scope: Guardian.new(admin), root: false) end + before do + SiteSetting.navigation_menu = "legacy" + SiteSetting.chat_enabled = false if defined?(::Chat) + end + it "should include relevant user info" do payload = serializer.as_json expect(payload[:email]).to eq(user.email)