Include a more stable way of detecting when withOnyx keys change #412
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.
This is another take on the same fix that I did in #407.
Details
There are two cases that need to be handled slightly different in
componentDidUpdate():this.state.loadinggoing fromtruetofalseThis causes some differences in how the
previousKeyis calculated in order to compare if the key changed or not. Hopefully, the code comments explain this pretty well.Related Issues
NA
Automated Tests
Yes, this is fully covered by automated tests and it was how I found that the solution in #407 was not correct.
Manual Tests
npm run buildand copy the changes to the App'snode_modules/react-native-onyxfolderReportScreen.jsto have a log at the top of the render method likeconsole.log('Tim ReportScreen()');npm run webon App to start the appNow, to verify that the dependent keys are working:
Scanning...label. That label won't be there if the dependent data isn't loading properlyAuthor Checklist
### Related Issuessection aboveTestssectiontoggleReportand notonIconClick)myBool && <MyComponent />.STYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)/** comment above it */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)Avataris modified, I verified thatAvataris working as expected in all cases)mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Web
2023-10-31_15-38-18.mp4
Mobile Web - Chrome
Mobile Web - Safari
Desktop
2023-10-31_15-45-31.mp4
iOS
2023-10-31_16-23-26.mp4
Android
Uploading 2023-11-01_10-00-27.mp4…