From 667d5b7ec24771252ca5fb22e1492a778d2ceeba Mon Sep 17 00:00:00 2001 From: Donald Chen Date: Fri, 16 Feb 2024 10:32:36 -0800 Subject: [PATCH 1/2] adjust bottom viewability math --- .vscode/settings.json | 2 +- src/viewability/ViewabilityHelper.ts | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index a486feb3d..e668f936c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,7 +18,7 @@ "**/node_modules": true }, "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" }, "eslint.validate": ["typescript", "typescriptreact"], "editor.formatOnSave": true, diff --git a/src/viewability/ViewabilityHelper.ts b/src/viewability/ViewabilityHelper.ts index e39bef9b2..fdeed48ad 100644 --- a/src/viewability/ViewabilityHelper.ts +++ b/src/viewability/ViewabilityHelper.ts @@ -134,11 +134,9 @@ class ViewabilityHelper { if (itemLayout === undefined) { return false; } - const itemTop = (horizontal ? itemLayout.x : itemLayout.y) - scrollOffset; + const itemTop = (horizontal ? itemLayout.x : itemLayout.y) - scrollOffset + bottomViewabilityInset; const itemSize = horizontal ? itemLayout.width : itemLayout.height; - const listMainSize = horizontal - ? listSize.width - : listSize.height - bottomViewabilityInset; + const listMainSize = horizontal ? listSize.width : listSize.height; const pixelsVisible = Math.min(itemTop + itemSize, listMainSize) - Math.max(itemTop, 0); From f7552b6cc3c30b2154818fd72ca3aa1759d953cb Mon Sep 17 00:00:00 2001 From: Donald Chen Date: Fri, 16 Feb 2024 13:06:53 -0800 Subject: [PATCH 2/2] debug logs --- src/viewability/ViewabilityHelper.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/viewability/ViewabilityHelper.ts b/src/viewability/ViewabilityHelper.ts index fdeed48ad..6ab6a54ef 100644 --- a/src/viewability/ViewabilityHelper.ts +++ b/src/viewability/ViewabilityHelper.ts @@ -140,6 +140,8 @@ class ViewabilityHelper { const pixelsVisible = Math.min(itemTop + itemSize, listMainSize) - Math.max(itemTop, 0); + console.log(`pikachu isItemViewable. index: ${index}, itemTop: ${itemTop}, itemSize: ${itemSize}, listMainSize: ${listMainSize}, pixelsVisible: ${pixelsVisible}. scrollOffset: ${scrollOffset}. bottomViewabilityInset: ${bottomViewabilityInset}`) + // Always consider item fully viewable if it is fully visible, regardless of the `viewAreaCoveragePercentThreshold` // Account for floating point imprecision. if (Math.abs(pixelsVisible - itemSize) <= 0.001) {