From c3e7d97048c36dbf4d56b408379d0e780651ef77 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9rgio=20Saquetim?=
<1108771+megothss@users.noreply.github.com>
Date: Thu, 12 Dec 2024 18:27:02 -0300
Subject: [PATCH] DEV: Switch the glimmer post menu to auto and unsilence
deprecations (#30161)
This commit starts the rollout of the Glimmer post menu:
- default to `auto`: after the upgrade, it will be enabled on all discourse instances that do not have incompatible customizations
- unsilence the deprecation messages in the console
- removes the setting `glimmer_post_menu_groups` as it's no longer in the test phase
---
.../addon/deprecation-workflow.js | 4 ---
.../discourse/app/lib/plugin-api.gjs | 26 ++++++--------
.../javascripts/discourse/app/widgets/post.js | 36 +++++++++----------
.../acceptance/keyboard-shortcuts-test.js | 2 +-
app/serializers/current_user_serializer.rb | 5 ---
config/site_settings.yml | 10 +-----
...remove_glimmer_post_menu_groups_setting.rb | 13 +++++++
7 files changed, 42 insertions(+), 54 deletions(-)
create mode 100644 db/migrate/20241211030039_remove_glimmer_post_menu_groups_setting.rb
diff --git a/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js b/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js
index 3e9179b10d9..3e42216a42b 100644
--- a/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js
+++ b/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js
@@ -6,10 +6,6 @@ const DEPRECATION_WORKFLOW = [
handler: "silence",
matchId: "discourse.decorate-widget.hamburger-widget-links",
},
- {
- handler: "silence",
- matchId: "discourse.post-menu-widget-overrides",
- },
{
handler: "silence",
matchId: "discourse.hbr-topic-list-overrides",
diff --git a/app/assets/javascripts/discourse/app/lib/plugin-api.gjs b/app/assets/javascripts/discourse/app/lib/plugin-api.gjs
index 487437ed5cc..0ffb4e1cf24 100644
--- a/app/assets/javascripts/discourse/app/lib/plugin-api.gjs
+++ b/app/assets/javascripts/discourse/app/lib/plugin-api.gjs
@@ -171,6 +171,12 @@ const DEPRECATED_POST_MENU_WIDGETS = [
"small-user-list",
];
+const POST_MENU_DEPRECATION_OPTIONS = {
+ since: "v3.4.0.beta3-dev",
+ id: "discourse.post-menu-widget-overrides",
+ url: "https://meta.discourse.org/t/341014",
+};
+
const appliedModificationIds = new WeakMap();
// This helper prevents us from applying the same `modifyClass` over and over in test mode.
@@ -880,10 +886,7 @@ class PluginApi {
addPostMenuButton(name, callback) {
deprecated(
"`api.addPostMenuButton` has been deprecated. Use the value transformer `post-menu-buttons` instead.",
- {
- since: "v3.4.0.beta3-dev",
- id: "discourse.post-menu-widget-overrides",
- }
+ POST_MENU_DEPRECATION_OPTIONS
);
apiExtraButtons[name] = callback;
@@ -958,10 +961,7 @@ class PluginApi {
removePostMenuButton(name, callback) {
deprecated(
"`api.removePostMenuButton` has been deprecated. Use the value transformer `post-menu-buttons` instead.",
- {
- since: "v3.4.0.beta3-dev",
- id: "discourse.post-menu-widget-overrides",
- }
+ POST_MENU_DEPRECATION_OPTIONS
);
removeButton(name, callback);
@@ -986,10 +986,7 @@ class PluginApi {
replacePostMenuButton(name, widget) {
deprecated(
"`api.replacePostMenuButton` has been deprecated. Use the value transformer `post-menu-buttons` instead.",
- {
- since: "v3.4.0.beta3-dev",
- id: "discourse.post-menu-widget-overrides",
- }
+ POST_MENU_DEPRECATION_OPTIONS
);
replaceButton(name, widget);
@@ -3418,10 +3415,7 @@ class PluginApi {
if (DEPRECATED_POST_MENU_WIDGETS.includes(widgetName)) {
deprecated(
`The ${widgetName} widget has been deprecated and ${override} is no longer a supported override.`,
- {
- since: "v3.4.0.beta3-dev",
- id: "discourse.post-menu-widget-overrides",
- }
+ POST_MENU_DEPRECATION_OPTIONS
);
}
}
diff --git a/app/assets/javascripts/discourse/app/widgets/post.js b/app/assets/javascripts/discourse/app/widgets/post.js
index ddb819d2ca1..ffa95a48fa9 100644
--- a/app/assets/javascripts/discourse/app/widgets/post.js
+++ b/app/assets/javascripts/discourse/app/widgets/post.js
@@ -550,11 +550,15 @@ createWidget("post-contents", {
if (
this.siteSettings.glimmer_post_menu_mode === "enabled" ||
- ((this.siteSettings.glimmer_post_menu_mode === "auto" ||
- this.currentUser?.use_auto_glimmer_post_menu) &&
+ (this.siteSettings.glimmer_post_menu_mode === "auto" &&
!postMenuWidgetExtensionsAdded)
) {
if (!postMenuConsoleWarningLogged) {
+ if (!isTesting()) {
+ // eslint-disable-next-line no-console
+ console.log("✅ Using the new 'glimmer' post menu!");
+ }
+
if (postMenuWidgetExtensionsAdded) {
postMenuConsoleWarningLogged = true;
@@ -567,12 +571,6 @@ createWidget("post-contents", {
// TODO (glimmer-post-menu): add link to meta topic here when the roadmap for the update is announced
].join("\n- ")
);
- } else if (this.currentUser?.use_auto_glimmer_post_menu) {
- // TODO (glimmer-post-menu): remove this else if block when removing the site setting glimmer_post_menu_groups
- postMenuConsoleWarningLogged = true;
-
- // eslint-disable-next-line no-console
- console.log("✅ Using the new 'glimmer' post menu!");
}
}
@@ -617,8 +615,7 @@ createWidget("post-contents", {
);
} else {
if (
- (this.siteSettings.glimmer_post_menu_mode !== "disabled" ||
- this.currentUser?.use_auto_glimmer_post_menu) &&
+ this.siteSettings.glimmer_post_menu_mode !== "disabled" &&
postMenuWidgetExtensionsAdded &&
!postMenuConsoleWarningLogged
) {
@@ -1019,15 +1016,16 @@ createWidget("post-article", {
return new RenderGlimmer(
this,
"div.topic-map.--op",
- hbs``,
+ hbs`
+ `,
{
model: attrs.topic,
topicDetails: attrs.topic.get("details"),
diff --git a/app/assets/javascripts/discourse/tests/acceptance/keyboard-shortcuts-test.js b/app/assets/javascripts/discourse/tests/acceptance/keyboard-shortcuts-test.js
index dbaa8ebe0f6..edf01177801 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/keyboard-shortcuts-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/keyboard-shortcuts-test.js
@@ -31,7 +31,7 @@ acceptance("Keyboard Shortcuts - Anonymous Users", function (needs) {
await visit("/t/this-is-a-test-topic/9");
await triggerKeyEvent(document, "keypress", "G");
await triggerKeyEvent(document, "keypress", "S");
- assert.strictEqual(currentURL(), "/t/this-is-a-test-topic/9");
+ assert.true(currentURL().startsWith("/t/this-is-a-test-topic/9"));
// Suggested topics elements exist.
await visit("/t/internationalization-localization/280");
diff --git a/app/serializers/current_user_serializer.rb b/app/serializers/current_user_serializer.rb
index b9fc528560b..419dbcf7e23 100644
--- a/app/serializers/current_user_serializer.rb
+++ b/app/serializers/current_user_serializer.rb
@@ -76,7 +76,6 @@ class CurrentUserSerializer < BasicUserSerializer
:use_admin_sidebar,
:can_view_raw_email,
:use_glimmer_topic_list?,
- :use_auto_glimmer_post_menu?,
:login_method,
:has_unseen_features
@@ -327,10 +326,6 @@ class CurrentUserSerializer < BasicUserSerializer
scope.user.in_any_groups?(SiteSetting.experimental_glimmer_topic_list_groups_map)
end
- def use_auto_glimmer_post_menu?
- scope.user.in_any_groups?(SiteSetting.glimmer_post_menu_groups_map)
- end
-
def do_not_disturb_channel_position
MessageBus.last_id("/do-not-disturb/#{object.id}")
end
diff --git a/config/site_settings.yml b/config/site_settings.yml
index 63315551b45..99e95b99c9e 100644
--- a/config/site_settings.yml
+++ b/config/site_settings.yml
@@ -3344,20 +3344,12 @@ experimental:
refresh: true
glimmer_post_menu_mode:
client: true
- hidden: true
type: enum
choices:
- disabled
- auto
- enabled
- default: disabled
- glimmer_post_menu_groups:
- client: true
- type: group_list
- list_type: compact
- default: ""
- allow_any: false
- refresh: true
+ default: auto
enable_experimental_lightbox:
default: false
client: true
diff --git a/db/migrate/20241211030039_remove_glimmer_post_menu_groups_setting.rb b/db/migrate/20241211030039_remove_glimmer_post_menu_groups_setting.rb
new file mode 100644
index 00000000000..d9231d32dc3
--- /dev/null
+++ b/db/migrate/20241211030039_remove_glimmer_post_menu_groups_setting.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+class RemoveGlimmerPostMenuGroupsSetting < ActiveRecord::Migration[7.2]
+ def up
+ execute <<~SQL
+ DELETE FROM site_settings
+ WHERE name = 'glimmer_post_menu_groups'
+ SQL
+ end
+
+ def down
+ raise ActiveRecord::IrreversibleMigration
+ end
+end