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
toggleUserMenu() {
this.header.userVisible = !this.header.userVisible;
toggleUserMenu(value) {
this.header.userVisible = value ?? !this.header.userVisible;
this.toggleBodyScrolling(this.header.userVisible);
this.args.animateMenu();
}

View File

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

View File

@ -2941,7 +2941,7 @@ en:
membership_request_consolidated: "new membership requests"
reaction: "new reaction"
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"
upload_selector:

View File

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