Conversation
|
@thesahindia Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
jasperhuangg
left a comment
There was a problem hiding this comment.
nice!! thanks for persevering with a fix :)
|
@thesahindia unassigning you and completing this review internally in the interest of urgency since this fixes a deploy blocker |
Reviewer Checklist
Screenshots/VideosWebweb.movMobile Web - ChromeAndroid emulator not working.. but confident that it works on Android and need to fix this deploy blocker Mobile Web - Safarimweb_safari.mp4Desktopdesktop.moviOSN/A AndroidN/A |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
Fix lottie interactions (cherry picked from commit a7624bb)
|
🚀 Deployed to staging by https://github.com/jasperhuangg in version: 1.3.42-25 🚀
|
|
🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.42-26 🚀
|
|
🚀 Deployed to staging by https://github.com/jasperhuangg in version: 1.3.44-0 🚀
|
|
🚀 Deployed to production by https://github.com/marcaaron in version: 1.3.44-2 🚀
|
Details
The root cause of this bug was strange:
InteractionsManager.runAfterInteractionsintentionally won't call the callback if an animation is running. You can override this with an undocumentedisInteractionanimation config in React Native.InteractionsManager.runAfterInteractionsusesrequestIdleCallbackunder the hoodrequestIdleCallbackwas never called, andPressableWithFeedbackcomponents would get stuck in theisExecuting=truestate and be permanently disabled.To fix this, I basically re-wrote the simple react-native-web-lottie dependency using a modern functional style + w/
useEffectand it worked as expected. Something about the old component (maybecomponentWillUnmountorUNSAFE_componentWillReceiveProps) was not playing nice with our react code and the cleanup that needed to happen was not happening.In the re-write, I did drop some features we don't use for simplicity. The new version of the component is as follows:
Fixed Issues
$ #23052
Tests / QA Steps
Click back and forth out of the Preferences page as fast as you can about a million times and make sure that you don't see the Preferences menu item disabled.
Offline tests
None
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)myBool && <MyComponent />.src/languages/*files and using the translation methodWaiting for Copylabel for a copy review on the original GH to get the correct copy.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)StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)ScrollViewcomponent to make it scrollable when more elements are added to the page.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
web.mov
Mobile Web - Chrome
androidWeb.mov
Mobile Web - Safari
iOSWeb.mov
Desktop
desktop.mov
iOS
web/desktop change only
Android
web/desktop change only