From 1ccb3be961795c569c8c1eb64ca0617bd6548e79 Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 22 Feb 2024 16:03:20 +0000 Subject: Refactor feed header components (#2964) * Move home-related files to view/com/home * Add HomeHeader in front of FeedTabBar * Move isDekstop check outside FeedsTabBar * Remove PWI logic from tabbar * Separate platform-specific layout from shared logic --- src/view/com/home/HomeHeader.tsx | 71 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/view/com/home/HomeHeader.tsx (limited to 'src/view/com/home/HomeHeader.tsx') diff --git a/src/view/com/home/HomeHeader.tsx b/src/view/com/home/HomeHeader.tsx new file mode 100644 index 000000000..5ffa31f39 --- /dev/null +++ b/src/view/com/home/HomeHeader.tsx @@ -0,0 +1,71 @@ +import React from 'react' +import {RenderTabBarFnProps} from 'view/com/pager/Pager' +import {HomeHeaderLayout} from './HomeHeaderLayout' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {usePinnedFeedsInfos} from '#/state/queries/feed' +import {useNavigation} from '@react-navigation/native' +import {NavigationProp} from 'lib/routes/types' +import {isWeb} from 'platform/detection' +import {TabBar} from '../pager/TabBar' +import {usePalette} from '#/lib/hooks/usePalette' + +export function HomeHeader( + props: RenderTabBarFnProps & {testID?: string; onPressSelected: () => void}, +) { + const {isDesktop} = useWebMediaQueries() + if (isDesktop) { + return null + } + return +} + +export function HomeHeaderInner( + props: RenderTabBarFnProps & {testID?: string; onPressSelected: () => void}, +) { + const navigation = useNavigation() + const {feeds, hasPinnedCustom} = usePinnedFeedsInfos() + const pal = usePalette('default') + + const items = React.useMemo(() => { + const pinnedNames = feeds.map(f => f.displayName) + + if (!hasPinnedCustom) { + return pinnedNames.concat('Feeds ✨') + } + return pinnedNames + }, [hasPinnedCustom, feeds]) + + const onPressFeedsLink = React.useCallback(() => { + if (isWeb) { + navigation.navigate('Feeds') + } else { + navigation.navigate('FeedsTab') + navigation.popToTop() + } + }, [navigation]) + + const onSelect = React.useCallback( + (index: number) => { + if (!hasPinnedCustom && index === items.length - 1) { + onPressFeedsLink() + } else if (props.onSelect) { + props.onSelect(index) + } + }, + [items.length, onPressFeedsLink, props, hasPinnedCustom], + ) + + return ( + + + + ) +} -- cgit 1.4.1