diff options
Diffstat (limited to 'src/lib/hooks/useInitialNumToRender.ts')
-rw-r--r-- | src/lib/hooks/useInitialNumToRender.ts | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/lib/hooks/useInitialNumToRender.ts b/src/lib/hooks/useInitialNumToRender.ts index 942f0404a..82bc89c0f 100644 --- a/src/lib/hooks/useInitialNumToRender.ts +++ b/src/lib/hooks/useInitialNumToRender.ts @@ -1,11 +1,19 @@ -import React from 'react' -import {Dimensions} from 'react-native' +import {useWindowDimensions} from 'react-native' +import {useSafeAreaInsets} from 'react-native-safe-area-context' + +import {useBottomBarOffset} from 'lib/hooks/useBottomBarOffset' const MIN_POST_HEIGHT = 100 -export function useInitialNumToRender(minItemHeight: number = MIN_POST_HEIGHT) { - return React.useMemo(() => { - const screenHeight = Dimensions.get('window').height - return Math.ceil(screenHeight / minItemHeight) + 1 - }, [minItemHeight]) +export function useInitialNumToRender({ + minItemHeight = MIN_POST_HEIGHT, + screenHeightOffset = 0, +}: {minItemHeight?: number; screenHeightOffset?: number} = {}) { + const {height: screenHeight} = useWindowDimensions() + const {top: topInset} = useSafeAreaInsets() + const bottomBarHeight = useBottomBarOffset() + + const finalHeight = + screenHeight - screenHeightOffset - topInset - bottomBarHeight + return Math.floor(finalHeight / minItemHeight) + 1 } |