import analytics from '@components/analytics' import { HeaderRight } from '@components/Header' import Timeline from '@components/Timeline' import TimelineDefault from '@components/Timeline/Default' import SegmentedControl from '@react-native-community/segmented-control' import { createNativeStackNavigator } from '@react-navigation/native-stack' import { ScreenTabsScreenProps, TabPublicStackParamList } from '@utils/navigation/navigators' import usePopToTop from '@utils/navigation/usePopToTop' import { QueryKeyTimeline } from '@utils/queryHooks/timeline' import { useTheme } from '@utils/styles/ThemeManager' import React, { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { Dimensions } from 'react-native' import { TabView } from 'react-native-tab-view' import TabShared from './Shared' const Stack = createNativeStackNavigator() const TabPublic = React.memo( ({ navigation }: ScreenTabsScreenProps<'Tab-Public'>) => { const { t, i18n } = useTranslation('screenTabs') const { mode, theme } = useTheme() const [segment, setSegment] = useState(0) const pages: { title: string key: Extract }[] = [ { title: t('tabs.public.segments.left'), key: 'LocalPublic' }, { title: t('tabs.public.segments.right'), key: 'Local' } ] const screenOptionsRoot = useMemo( () => ({ headerTitle: () => ( p.title)} selectedIndex={segment} onChange={({ nativeEvent }) => setSegment(nativeEvent.selectedSegmentIndex)} style={{ flexBasis: '65%' }} /> ), headerRight: () => ( { analytics('search_tap', { page: pages[segment].key }) navigation.navigate('Tab-Public', { screen: 'Tab-Shared-Search', params: { text: undefined } }) }} /> ) }), [theme, segment, i18n.language] ) const routes = pages.map(p => ({ key: p.key })) const renderScene = useCallback( ({ route: { key: page } }: { route: { key: Extract } }) => { const queryKey: QueryKeyTimeline = ['Timeline', { page }] return ( }} /> ) }, [] ) const children = useCallback( () => ( null} onIndexChange={index => setSegment(index)} navigationState={{ index: segment, routes }} initialLayout={{ width: Dimensions.get('screen').width }} /> ), [segment] ) usePopToTop() return ( {TabShared({ Stack })} ) }, () => true ) export default TabPublic