support multiple configs

This commit is contained in:
Hailey
2024-07-25 09:06:22 -07:00
parent b0742d5ef0
commit 554b7d5dc7
+22 -13
View File
@@ -1,5 +1,10 @@
import React, {memo} from 'react' 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 {runOnJS, useSharedValue} from 'react-native-reanimated'
import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED'
@@ -87,24 +92,29 @@ function ListImpl<ItemT>(
}, },
}) })
const [onViewableItemsChanged, viewabilityConfig] = React.useMemo(() => { const viewabilityConfigCallbackPairs: ViewabilityConfigCallbackPairs =
if (!onItemSeen) { React.useMemo(() => {
return [undefined, undefined] const pairs: ViewabilityConfigCallbackPairs = []
} if (onItemSeen) {
return [ pairs.push({
(info: {viewableItems: Array<ViewToken>; changed: Array<ViewToken>}) => { onViewableItemsChanged: (info: {
console.log(info.viewableItems[0]) viewableItems: Array<ViewToken>
changed: Array<ViewToken>
}) => {
for (const item of info.changed) { for (const item of info.changed) {
if (item.isViewable) { if (item.isViewable) {
onItemSeen(item.item) onItemSeen(item.item)
} }
} }
}, },
{ viewabilityConfig: {
itemVisiblePercentThreshold: 40, itemVisiblePercentThreshold: 40,
minimumViewTime: 0, minimumViewTime: 1.5e3,
}, },
] })
}
return pairs
}, [onItemSeen]) }, [onItemSeen])
let refreshControl let refreshControl
@@ -136,8 +146,7 @@ function ListImpl<ItemT>(
refreshControl={refreshControl} refreshControl={refreshControl}
onScroll={scrollHandler} onScroll={scrollHandler}
scrollEventThrottle={1} scrollEventThrottle={1}
onViewableItemsChanged={onViewableItemsChanged} viewabilityConfigCallbackPairs={viewabilityConfigCallbackPairs}
viewabilityConfig={viewabilityConfig}
style={style} style={style}
ref={ref} ref={ref}
/> />