diff options
author | dan <dan.abramov@gmail.com> | 2024-02-09 05:00:50 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-08 21:00:50 -0800 |
commit | d36b91fe67225a9d3c79c8eeb3c80f6a72e9f73f (patch) | |
tree | 965fb97bd9508afffdf66a4d2e951f57bd566f1e /src/view/com/pager/PagerWithHeader.web.tsx | |
parent | 0d00c7d8516d2e4b736f5a2eaa679dbcce2cb71c (diff) | |
download | voidsky-d36b91fe67225a9d3c79c8eeb3c80f6a72e9f73f.tar.zst |
Fix flashes and jumps when opening profile (#2815)
* Don't reset the tree when profile loads fully * Give avatars a background color like placeholders * Prevent jumps due to rich text resolving * Rm log * Rm unused
Diffstat (limited to 'src/view/com/pager/PagerWithHeader.web.tsx')
-rw-r--r-- | src/view/com/pager/PagerWithHeader.web.tsx | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/src/view/com/pager/PagerWithHeader.web.tsx b/src/view/com/pager/PagerWithHeader.web.tsx index 4f959d548..9c63c149f 100644 --- a/src/view/com/pager/PagerWithHeader.web.tsx +++ b/src/view/com/pager/PagerWithHeader.web.tsx @@ -31,6 +31,7 @@ export const PagerWithHeader = React.forwardRef<PagerRef, PagerWithHeaderProps>( children, testID, items, + isHeaderReady, renderHeader, initialPage, onPageSelected, @@ -46,6 +47,7 @@ export const PagerWithHeader = React.forwardRef<PagerRef, PagerWithHeaderProps>( <PagerTabBar items={items} renderHeader={renderHeader} + isHeaderReady={isHeaderReady} currentPage={currentPage} onCurrentPageSelected={onCurrentPageSelected} onSelect={props.onSelect} @@ -54,7 +56,14 @@ export const PagerWithHeader = React.forwardRef<PagerRef, PagerWithHeaderProps>( /> ) }, - [items, renderHeader, currentPage, onCurrentPageSelected, testID], + [ + items, + isHeaderReady, + renderHeader, + currentPage, + onCurrentPageSelected, + testID, + ], ) const onPageSelectedInner = React.useCallback( @@ -80,8 +89,14 @@ export const PagerWithHeader = React.forwardRef<PagerRef, PagerWithHeaderProps>( {toArray(children) .filter(Boolean) .map((child, i) => { + const isReady = isHeaderReady return ( - <View key={i} collapsable={false}> + <View + key={i} + collapsable={false} + style={{ + display: isReady ? undefined : 'none', + }}> <PagerItem isFocused={i === currentPage} renderTab={child} /> </View> ) @@ -94,6 +109,7 @@ export const PagerWithHeader = React.forwardRef<PagerRef, PagerWithHeaderProps>( let PagerTabBar = ({ currentPage, items, + isHeaderReady, testID, renderHeader, onCurrentPageSelected, @@ -104,6 +120,7 @@ let PagerTabBar = ({ items: string[] testID?: string renderHeader?: () => JSX.Element + isHeaderReady: boolean onCurrentPageSelected?: (index: number) => void onSelect?: (index: number) => void tabBarAnchor?: JSX.Element | null | undefined @@ -112,7 +129,12 @@ let PagerTabBar = ({ const {isMobile} = useWebMediaQueries() return ( <> - <View style={[!isMobile && styles.headerContainerDesktop, pal.border]}> + <View + style={[ + !isMobile && styles.headerContainerDesktop, + pal.border, + !isHeaderReady && styles.loadingHeader, + ]}> {renderHeader?.()} </View> {tabBarAnchor} @@ -123,6 +145,9 @@ let PagerTabBar = ({ ? styles.tabBarContainerMobile : styles.tabBarContainerDesktop, pal.border, + { + display: isHeaderReady ? undefined : 'none', + }, ]}> <TabBar testID={testID} @@ -183,6 +208,9 @@ const styles = StyleSheet.create({ paddingLeft: 14, paddingRight: 14, }, + loadingHeader: { + borderColor: 'transparent', + }, }) function toArray<T>(v: T | T[]): T[] { |