FIX: Double trigger of close user menu (#30732)

When clicking the "new features" notification item for
admins that navigates to /whats-new, the user notification
menu was not closing. This was happening because inside
the UserMenu::Menu component, the `routeDidChange` event
was firing and calling `closeUserMenu()`, however this is already
called inside the `Header` component via `toggleHamburger()`.

This is _only_ happening for the "new features" notification
item, other items have already been destroyed and they do not get
the `routeDidChange` event. No idea why, but this fixes the issue
in a global way.
This commit is contained in:
Martin Brennan 2025-01-15 10:38:08 +10:00 committed by GitHub
parent 73b28815e3
commit 5bc522e836
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 8 additions and 5 deletions

View File

@ -205,8 +205,8 @@ export default class GlimmerHeader extends Component {
} }
@action @action
toggleUserMenu() { toggleUserMenu(value) {
this.header.userVisible = !this.header.userVisible; this.header.userVisible = value ?? !this.header.userVisible;
this.toggleBodyScrolling(this.header.userVisible); this.toggleBodyScrolling(this.header.userVisible);
this.args.animateMenu(); this.args.animateMenu();
} }

View File

@ -1,5 +1,5 @@
import Component from "@glimmer/component"; import Component from "@glimmer/component";
import { hash } from "@ember/helper"; import { fn, hash } from "@ember/helper";
import { action } from "@ember/object"; import { action } from "@ember/object";
import { isTesting } from "discourse/lib/environment"; import { isTesting } from "discourse/lib/environment";
import discourseLater from "discourse/lib/later"; import discourseLater from "discourse/lib/later";
@ -53,7 +53,7 @@ export default class UserMenuWrapper extends Component {
}} }}
...attributes ...attributes
> >
<UserMenu @closeUserMenu={{@toggleUserMenu}} /> <UserMenu @closeUserMenu={{fn @toggleUserMenu false}} />
</div> </div>
</template> </template>
} }

View File

@ -2941,7 +2941,7 @@ en:
membership_request_consolidated: "new membership requests" membership_request_consolidated: "new membership requests"
reaction: "new reaction" reaction: "new reaction"
votes_released: "Vote was released" votes_released: "Vote was released"
new_features: "new Discourse features have been released!" new_features: "New Discourse features have been released!"
admin_problems: "new advice on your site dashboard" admin_problems: "new advice on your site dashboard"
upload_selector: upload_selector:

View File

@ -73,6 +73,9 @@ RSpec.describe "Bookmark message", type: :system do
expect(channel_page).to have_bookmarked_message(message_1) expect(channel_page).to have_bookmarked_message(message_1)
user_menu.open
user_menu.click_bookmarks_tab
user_menu.click_bookmark(bookmark_2) user_menu.click_bookmark(bookmark_2)
expect(channel_page).to have_bookmarked_message(message_2) expect(channel_page).to have_bookmarked_message(message_2)