Closed lanitochka17 closed 12 months ago
Triggered auto assignment to @sophiepintoraetz (Bug
), see https://stackoverflow.com/c/expensify/questions/14418 for more details.
Platforms
in OP are ✅):wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash
deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:
Triggered auto assignment to @cead22 (Engineering
), see https://stackoverflow.com/c/expensify/questions/4319 for more details.
Mute option not seen in notification prefrences when immediately is selected
Here root cause behaviour of SectionList
when we set initialScrollIndex
to ">=" 2, Sectionlist just start at initialScrollIndex skip the rendering items before it (according to layout) and only render on scroll, in case of notification pref. page the items are limited no scroll event can be triggered so sectionlist wont render skipped items
(above root cause can be verified if we set a max width to notification page screen Wrapper and apply overscroll auto manually)
https://github.com/Expensify/App/assets/104348397/bdcdaeb1-9e7d-444b-9ee3-4b05e110794e
we should apply the fix from https://github.com/Expensify/App/pull/30972 selctively for cases when list is long and scrollable (EG. currency list) and revert back for other lists.
Code changes :
Introduce a prop shouldUseInitialScrollIndex
and use it only for IOUCurrencySelection
only (for now) until we realize to while other selectors Menus we want to use this.
const scrollToFocusedIndexOnFirstRender = useCallback(() => {
if (!firstLayoutRef.current) {
return;
}
scrollToIndex(focusedIndex, false);
firstLayoutRef.current = false;
}, [focusedIndex, scrollToIndex]);
<SectionList
// other props
onLayout={shouldUseInitialScrollIndex ? handleFirstLayout : scrollToFocusedIndexOnFirstRender}
// eslint-disable-next-line react/jsx-props-no-spreading
{...(shouldUseInitialScrollIndex && {initialScrollIndex: initialFocusedIndex})}
/>
OR revert https://github.com/Expensify/App/pull/30972 completely
Removing this line fixes this issue: (Not a real solution but just for testing purpose) https://github.com/Expensify/App/blob/ffe1c63a57f80479450dcf0e5c2fa82509630c8f/src/components/SelectionList/BaseSelectionList.js#L441
So I can confirm that the root cause is related to combination of getItemLayout
and initialScrollIndex
.
When initialScrollIndex
is set, previous items (index 0 - initialScrollIndex-2) are not rendered and thus getItemLayout
callback is not called.
That's why this isn't noticeable when number of items are less than 3 (i.e. Language or Priority mode pages).
Acc. to this, to use initialScrollIndex
list Requires getItemLayout to be implemented.
Interesting if it's RN bug. @ishpaul777 can you reproduce with minimal repro step in new RN project?
~I can try tommorrow (monday), its late and i am AFK.~
i reproduced on a snack here https://snack.expo.dev/_a4GIohtB?platform=android, when items are limited, items rendered from scrollindex - 1
and list is not even scrollable
https://github.com/Expensify/App/assets/104348397/7a4482c4-c8a6-48bb-9653-262751b02907
This came in over my weekend - i'm able to reproduce. @cead22, I don't think this is deploy blocker worthy though?
This bug is critical and blocks other PRs. i.e. https://github.com/Expensify/App/pull/30958#issuecomment-1807220638
@situchan do you think we should revert or apply a fix until bug is resolve upstream. Though I dont think this to be accepted as bug but "expected behaviour" for list in RN repo?
I think we should revert
cc @deetergp @fedirjh @kubabutkiewicz
I agree that we should revert, I will raise a revert PR shortly.
cc @cead22 PR is ready https://github.com/Expensify/App/pull/31262
Confirmed that this was fixed by https://github.com/Expensify/App/pull/31262
Cool - is there a regression test we should include as a part of this - @fedirjh @roryabraham?
Cool - is there a regression test we should include as a part of this
I think we already have a regression test for this? The issue was already identified in the staging.
Reviewing
label has been removed, please complete the "BugZero Checklist".
The solution for this issue has been :rocket: deployed to production :rocket: in version 1.3.98-5 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2023-11-21. :confetti_ball:
After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.
BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
All right, nothing further to do here, given it was a regression. Closing.
The solution for this issue has been :rocket: deployed to production :rocket: in version 1.3.99-0 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2023-11-22. :confetti_ball:
After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.
BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!
Version Number: 1.3.98-0 Reproducible in staging?: Y Reproducible in production?: N If this was caught during regression testing, add the test name, ID and link from TestRail: Email or phone of affected tester (no customers): Logs: https://stackoverflow.com/c/expensify/questions/4856 Expensify/Expensify Issue URL: Issue reported by: Applause - Internal Team Slack conversation:
Action Performed:
Expected Result:
All the menu options "Mute", "Daily" and "Immediately" are visible
Actual Result:
The "Mute" option is not visible when "Immediately" is selected
Workaround:
Unknown
Platforms:
Which of our officially supported platforms is this issue occurring on?
Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/78819774/f51de853-e93e-4077-a156-1205a894aaad
View all open jobs on GitHub