diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index b0473cfd4f..cef0a4508b 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -6,6 +6,7 @@ import { ViewToken, } from 'react-native' import {runOnJS, useSharedValue} from 'react-native-reanimated' +import EventEmitter from 'eventemitter3' import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' import {usePalette} from '#/lib/hooks/usePalette' @@ -13,6 +14,8 @@ import {useScrollHandlers} from '#/lib/ScrollContext' import {addStyle} from 'lib/styles' import {FlatList_INTERNAL} from './Views' +export const VisibilityEmitter = new EventEmitter() + export type ListMethods = FlatList_INTERNAL export type ListProps = Omit< FlatListProps, @@ -114,6 +117,17 @@ function ListImpl( }) } + pairs.push({ + onViewableItemsChanged: (info: {viewableItems: Array}) => { + VisibilityEmitter.emit('viewableItemsChanged', info.viewableItems) + }, + viewabilityConfig: { + itemVisiblePercentThreshold: 40, + // Small throttle + minimumViewTime: 250, + }, + }) + return pairs }, [onItemSeen])