fix: separate _onDayPress from _onCalendarListDayPress & block unrelated taps with height based _isOpen. #2614
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
We are resetting the week calendar in bounceToPosition with resetWeekCalendarOpacity(_isOpen) before the animation completes. It is based on height tracking rather than position local state. This creates a discrepancy between what you see in UI (_isOpen) and what gets tapped on (that is position-based isOpen) causing unintended day changes when the different view is tapped while animation complete callback is not run.
extra
We could have moved
setPosition
outside the Animated callback and put it together withresetWeekCalendarOpacity
(like in below snippet), which would sync the view with what position actually is, but this would destroy the animation (which I think is nice). Hence the main fix is around blocking unintended taps (taps that are different from what you see) and only process those taps that happen after the animation completes and setPosition is updated.