-
Notifications
You must be signed in to change notification settings - Fork 728
Open
Description
Description
When the models are rebuilt, below snippets
epoxy/epoxy-adapter/src/main/java/com/airbnb/epoxy/EpoxyVisibilityTracker.kt
Lines 331 to 340 in 109d434
| // View is measured, process events | |
| vi.handleVisible(epoxyHolder, detachEvent) | |
| partialImpressionThresholdPercentage?.let { percentage -> | |
| vi.handlePartialImpressionVisible( | |
| epoxyHolder, detachEvent, | |
| percentage | |
| ) | |
| } | |
| vi.handleFocus(epoxyHolder, detachEvent) | |
| vi.handleFullImpressionVisible(epoxyHolder, detachEvent) |
may emit events in below order
VisibilityState.INVISIBLE
VisibilityState.PARTIAL_IMPRESSION_INVISIBLE
VisibilityState.UNFOCUSED_VISIBLE
although detachEvent = true.
The screenshot below shows the call stack when the view is detached after models are rebuilt.

Suggestion
Assuming that VisiblityState.VISIBLE is the only initial state and VisibilityState.INVISIBLE the terminal state, I find the above sequence unexpected.
Shouldn't they be
VisibilityState.VISIBLE
// Some other visible states
// The user refreshes the feed
VisibilityState.UNFOCUSED_VISIBLE
VisibilityState.PARTIAL_IMPRESSION_INVISIBLE
VisibilityState.INVISIBLE
// No other VisibilityStates
or with smaller code changes maybe we can just
VisibilityState.VISIBLE
// Some other visible states
// The user refreshes the feed
VisibilityState.INVISIBLE
// No other VisibilityStates
Environment
Epoxy version 4.6.4
Metadata
Metadata
Assignees
Labels
No labels