Registers a callback to monitor when the node is first inside of the viewport of the window or not.
OnFirstVisibleImpressionLoggingSample
@Suppress("DEPRECATION")
@Composable
fun OnFirstVisibleImpressionLoggingSample() {
@Composable
fun VideoFeed(feedData: List<Video>, logger: Logger) {
LazyColumn {
items(feedData) { video ->
VideoRow(
video,
Modifier.onFirstVisible(minDurationMs = 500, minFractionVisible = 1f) {
logger.logImpression(video.id)
},
)
}
}
}
}
OnFirstVisibleImpressionLoggingWithViewportSample
@Suppress("DEPRECATION")
@Composable
fun OnFirstVisibleImpressionLoggingWithViewportSample() {
@Composable
fun VideoFeed(feedData: List<Video>, logger: Logger) {
val viewport = remember { LayoutBoundsHolder() }
LazyColumn(Modifier.layoutBounds(viewport)) {
items(feedData) { video ->
VideoRow(
video,
Modifier.onFirstVisible(
minDurationMs = 500,
minFractionVisible = 1f,
viewportBounds = viewport,
) {
logger.logImpression(video.id)
},
)
}
}
}
}