From 554b7d5dc710a13f0e02da1245c9496595f95666 Mon Sep 17 00:00:00 2001 From: Hailey Date: Thu, 25 Jul 2024 09:06:22 -0700 Subject: [PATCH] support multiple configs --- src/view/com/util/List.tsx | 53 ++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index 1b65504ba0..b0473cfd4f 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -1,5 +1,10 @@ import React, {memo} from 'react' -import {FlatListProps, RefreshControl, ViewToken} from 'react-native' +import { + FlatListProps, + RefreshControl, + ViewabilityConfigCallbackPairs, + ViewToken, +} from 'react-native' import {runOnJS, useSharedValue} from 'react-native-reanimated' import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' @@ -87,25 +92,30 @@ function ListImpl( }, }) - const [onViewableItemsChanged, viewabilityConfig] = React.useMemo(() => { - if (!onItemSeen) { - return [undefined, undefined] - } - return [ - (info: {viewableItems: Array; changed: Array}) => { - console.log(info.viewableItems[0]) - for (const item of info.changed) { - if (item.isViewable) { - onItemSeen(item.item) - } - } - }, - { - itemVisiblePercentThreshold: 40, - minimumViewTime: 0, - }, - ] - }, [onItemSeen]) + const viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs = + React.useMemo(() => { + const pairs: ViewabilityConfigCallbackPairs = [] + if (onItemSeen) { + pairs.push({ + onViewableItemsChanged: (info: { + viewableItems: Array + changed: Array + }) => { + for (const item of info.changed) { + if (item.isViewable) { + onItemSeen(item.item) + } + } + }, + viewabilityConfig: { + itemVisiblePercentThreshold: 40, + minimumViewTime: 1.5e3, + }, + }) + } + + return pairs + }, [onItemSeen]) let refreshControl if (refreshing !== undefined || onRefresh !== undefined) { @@ -136,8 +146,7 @@ function ListImpl( refreshControl={refreshControl} onScroll={scrollHandler} scrollEventThrottle={1} - onViewableItemsChanged={onViewableItemsChanged} - viewabilityConfig={viewabilityConfig} + viewabilityConfigCallbackPairs={viewabilityConfigCallbackPairs} style={style} ref={ref} />