-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reset the persisted selected menu ID if there are no longer any menus #32306
Conversation
Size Change: +32 B (0%) Total Size: 1.03 MB
ℹ️ View Unchanged
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So I guess the 404
I was seeing from trying to fetch a non-existent menu?
Does this code prevent that? I'm not sure if it needs to, it might add additional loading time if all menus need to be fetched before fetching the selected menu, so perhaps it's better to let it 404.
Though another thought -an alternative might be that the code to reset the selected menu id happens as a result of the REST request for fetching the selected menu returning 404.
const selectedMenu = menus?.find( ( { id } ) => id === selectedMenuId ); | ||
|
||
if ( ! menus?.length || ! selectedMenu ) { | ||
setSelectedMenuId( 0 ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel like null
might better represent the absence of something. I know WordPress likes to count from 1
, but 0
still seems too much like a legit menu id.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tend to agree. I was basing it on the default state:
export function selectedMenuId( state = 0, action ) { |
But I guess if we pass null
then it will reset to 0
anyway.
Alternatively, we could create a new action CLEAR_SELECTED_MENU_ID
which might make it more explicit about what the intention is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, 404
originates from the Header component when it tried to fetch menuName
. This code won't prevent that but will fix the broken screen issue.
We currently don't have a way to reset the selected menu ID if menus were deleted by any other means, e.g., WP CLI.
I agree that changing the default/cleared state to be null
makes more sense now. I think @getdave mentioned this when reviewing original PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have an alternative PR that we also might want to consider. It's incoming...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alternative approach available #32313
This approach is probably better #32313 |
Description
In #31320 we started persisting the
selectedMenuId
to localStorage. Code was in place to reset this ID if the menu was deleted. However, there were no guards against the following conditionsThis PR attempts to address this.
Fixes #32256
How has this been tested?
Screenshots
Types of changes
Checklist:
*.native.js
files for terms that need renaming or removal).