diff --git a/Libraries/CustomComponents/Lists/ViewabilityHelper.js b/Libraries/CustomComponents/Lists/ViewabilityHelper.js index f3cc0e584..31ce384ba 100644 --- a/Libraries/CustomComponents/Lists/ViewabilityHelper.js +++ b/Libraries/CustomComponents/Lists/ViewabilityHelper.js @@ -49,7 +49,7 @@ export type ViewabilityConfig = {| * layout. * * An item is said to be in a "viewable" state when any of the following -* is true for longer than `minViewTime` milliseconds (after an interaction if `waitForInteraction` +* is true for longer than `minimumViewTime` milliseconds (after an interaction if `waitForInteraction` * is true): * * - Occupying >= `viewAreaCoveragePercentThreshold` of the view area XOR fraction of the item @@ -145,7 +145,7 @@ class ViewabilityHelper { renderRange?: {first: number, last: number}, // Optional optimization to reduce the scan size ): void { const updateTime = Date.now(); - if (this._lastUpdateTime === 0 && getFrameMetrics(0)) { + if (this._lastUpdateTime === 0 && itemCount > 0 && getFrameMetrics(0)) { // Only count updates after the first item is rendered and has a frame. this._lastUpdateTime = updateTime; } @@ -171,13 +171,13 @@ class ViewabilityHelper { } this._viewableIndices = viewableIndices; this._lastUpdateTime = updateTime; - if (this._config.minViewTime && updateElapsed < this._config.minViewTime) { + if (this._config.minimumViewTime && updateElapsed < this._config.minimumViewTime) { const handle = setTimeout( () => { this._timers.delete(handle); this._onUpdateSync(viewableIndices, onViewableItemsChanged, createViewToken); }, - this._config.minViewTime, + this._config.minimumViewTime, ); this._timers.add(handle); } else { diff --git a/Libraries/CustomComponents/Lists/__tests__/ViewabilityHelper-test.js b/Libraries/CustomComponents/Lists/__tests__/ViewabilityHelper-test.js index 199132ae8..1d97105a7 100644 --- a/Libraries/CustomComponents/Lists/__tests__/ViewabilityHelper-test.js +++ b/Libraries/CustomComponents/Lists/__tests__/ViewabilityHelper-test.js @@ -249,9 +249,9 @@ describe('onUpdate', function() { ); it( - 'minViewTime delays callback', + 'minimumViewTime delays callback', function() { - const helper = new ViewabilityHelper({minViewTime: 350, viewAreaCoveragePercentThreshold: 0}); + const helper = new ViewabilityHelper({minimumViewTime: 350, viewAreaCoveragePercentThreshold: 0}); rowFrames = { a: {y: 0, height: 200}, b: {y: 200, height: 200}, @@ -279,9 +279,9 @@ describe('onUpdate', function() { ); it( - 'minViewTime skips briefly visible items', + 'minimumViewTime skips briefly visible items', function() { - const helper = new ViewabilityHelper({minViewTime: 350, viewAreaCoveragePercentThreshold: 0}); + const helper = new ViewabilityHelper({minimumViewTime: 350, viewAreaCoveragePercentThreshold: 0}); rowFrames = { a: {y: 0, height: 250}, b: {y: 250, height: 200},