import React from 'react' import {StyleSheet, TouchableOpacity, View} from 'react-native' import {TabBar} from 'view/com/pager/TabBar' import {RenderTabBarFnProps} from 'view/com/pager/Pager' import {usePalette} from 'lib/hooks/usePalette' import {Link} from '../util/Link' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {FontAwesomeIconStyle} from '@fortawesome/react-native-fontawesome' import {HITSLOP_10} from 'lib/constants' import Animated from 'react-native-reanimated' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode' import {useSetDrawerOpen} from '#/state/shell/drawer-open' import {useShellLayout} from '#/state/shell/shell-layout' import {useSession} from '#/state/session' import {usePinnedFeedsInfos} from '#/state/queries/feed' import {isWeb} from 'platform/detection' import {useNavigation} from '@react-navigation/native' import {NavigationProp} from 'lib/routes/types' import {Logo} from '#/view/icons/Logo' import {IS_DEV} from '#/env' import {atoms} from '#/alf' import {Link as Link2} from '#/components/Link' import {ColorPalette_Stroke2_Corner0_Rounded as ColorPalette} from '#/components/icons/ColorPalette' export function FeedsTabBar( props: RenderTabBarFnProps & {testID?: string; onPressSelected: () => void}, ) { const pal = usePalette('default') const {hasSession} = useSession() const {_} = useLingui() const setDrawerOpen = useSetDrawerOpen() const navigation = useNavigation() const {feeds, hasPinnedCustom} = usePinnedFeedsInfos() const {headerHeight} = useShellLayout() const {headerMinimalShellTransform} = useMinimalShellMode() const pinnedDisplayNames = hasSession ? feeds.map(f => f.displayName) : [] const showFeedsLinkInTabBar = hasSession && !hasPinnedCustom const items = showFeedsLinkInTabBar ? pinnedDisplayNames.concat('Feeds ✨') : pinnedDisplayNames const onPressFeedsLink = React.useCallback(() => { if (isWeb) { navigation.navigate('Feeds') } else { navigation.navigate('FeedsTab') navigation.popToTop() } }, [navigation]) const onSelect = React.useCallback( (index: number) => { if (showFeedsLinkInTabBar && index === items.length - 1) { onPressFeedsLink() } else if (props.onSelect) { props.onSelect(index) } }, [items.length, onPressFeedsLink, props, showFeedsLinkInTabBar], ) const onPressAvi = React.useCallback(() => { setDrawerOpen(true) }, [setDrawerOpen]) return ( { headerHeight.value = e.nativeEvent.layout.height }}> {IS_DEV && ( )} {hasSession && ( )} {items.length > 0 && ( )} ) } const styles = StyleSheet.create({ tabBar: { position: 'absolute', zIndex: 1, left: 0, right: 0, top: 0, flexDirection: 'column', borderBottomWidth: 1, }, topBar: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', paddingHorizontal: 18, paddingVertical: 8, width: '100%', }, title: { fontSize: 21, }, })