From e33b88ed7df4eeb6356e50e7d8494b24b31973d0 Mon Sep 17 00:00:00 2001 From: Hailey Date: Thu, 29 Aug 2024 09:09:24 -0700 Subject: Profile screen performance tweak - Adjust initial num to render based on header height (#5005) --- src/lib/hooks/useInitialNumToRender.ts | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src/lib/hooks/useInitialNumToRender.ts') 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 } -- cgit 1.4.1