Repository navigation
[6.x] Refetch bulk actions when selections are replaced - #15674
Merged
Merged
Conversation
BulkActions watched the array it was first given, so once a listing replaced its selections (e.g. via an action's replaceInSelections callback), selecting other items no longer fetched their actions and the toolbar kept showing stale ones.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description of the Problem
The bulk actions toolbar can show the wrong actions for the selected items. After a bulk Move, for example, selecting other assets doesn't fetch their actions, so the toolbar keeps whatever it had before. If the last fetch was for an empty selection, you only get "Deselect".
What this PR Does
BulkActionswatchedprops.selectionsdirectly, which only follows the array it was first given. Actions like Move send back areplaceInSelectionscallback, and the listing then swaps in a new array, so the watcher never fires again.It now watches a getter instead, so it follows the prop when the array is replaced as well as when it's changed in place. I kept
deep, because selecting and deselecting still edit the array in place.The Listing tests now stub
axios.post, asBulkActionscorrectly fetches actions there now.stale-bulk-actions.mp4
How to Reproduce
actions/list, so the toolbar shows the previous item's actions.