tooot/src/screens/Tabs/Shared/index.tsx

178 lines
5.4 KiB
TypeScript
Raw Normal View History

2024-02-07 00:22:22 +01:00
import { HeaderLeft, HeaderRight } from '@components/Header'
import { createNativeStackNavigator } from '@react-navigation/native-stack'
2021-01-30 01:29:15 +01:00
import TabSharedAccount from '@screens/Tabs/Shared/Account'
2022-12-22 01:21:51 +01:00
import TabSharedAccountInLists from '@screens/Tabs/Shared/AccountInLists'
2021-01-30 01:29:15 +01:00
import TabSharedAttachments from '@screens/Tabs/Shared/Attachments'
import TabSharedHashtag from '@screens/Tabs/Shared/Hashtag'
2022-04-29 23:57:18 +02:00
import TabSharedHistory from '@screens/Tabs/Shared/History'
2022-12-22 01:21:51 +01:00
import TabSharedReport from '@screens/Tabs/Shared/Report'
2021-01-30 01:29:15 +01:00
import TabSharedSearch from '@screens/Tabs/Shared/Search'
import TabSharedToot from '@screens/Tabs/Shared/Toot'
2021-03-15 00:18:44 +01:00
import TabSharedUsers from '@screens/Tabs/Shared/Users'
2021-03-14 00:47:55 +01:00
import React from 'react'
2024-02-07 00:22:22 +01:00
import { Trans, useTranslation } from 'react-i18next'
2023-01-26 23:07:13 +01:00
import TabSharedFilter from './Filter'
2023-07-13 21:55:26 +02:00
import TabSharedMute from './Mute'
2024-02-07 00:22:22 +01:00
import {
TabLocalStackParamList,
TabMeStackParamList,
TabNotificationsStackParamList,
TabPublicStackParamList
} from '@utils/navigation/navigators'
import CustomText from '@components/Text'
import { ParseEmojis } from '@components/Parse'
import { useTheme } from '@utils/styles/ThemeManager'
const TabShared = (
Stack: ReturnType<
typeof createNativeStackNavigator<
| TabLocalStackParamList
| TabPublicStackParamList
| TabNotificationsStackParamList
| TabMeStackParamList
>
>
) => {
const { colors } = useTheme()
const { t } = useTranslation(['common', 'screenTabs'])
2021-01-07 22:18:14 +01:00
return (
2022-12-03 16:50:54 +01:00
<Stack.Group>
<Stack.Screen
name='Tab-Shared-Account'
component={TabSharedAccount}
2024-02-07 00:22:22 +01:00
options={{
title: '',
headerLeft: () => <HeaderLeft background />
}}
/>
2022-12-03 15:50:15 +01:00
<Stack.Screen
name='Tab-Shared-Account-In-Lists'
component={TabSharedAccountInLists}
2024-02-07 00:22:22 +01:00
options={({
navigation,
route: {
params: {
account: { username }
}
}
}) => ({
presentation: 'modal',
title: t('screenTabs:shared.accountInLists.name', { username: username }),
headerRight: () => (
<HeaderRight
type='text'
content={t('common:buttons.done')}
onPress={() => navigation.pop(1)}
/>
)
})}
2022-12-03 15:50:15 +01:00
/>
<Stack.Screen
name='Tab-Shared-Attachments'
component={TabSharedAttachments}
2024-02-07 00:22:22 +01:00
options={({
route: {
params: { account }
}
}) => ({
headerTitle: () => (
<CustomText numberOfLines={1}>
<Trans
ns='screenTabs'
i18nKey='shared.attachments.name'
components={[
<ParseEmojis
content={account.display_name || account.username}
emojis={account.emojis}
fontBold
/>,
<CustomText
fontStyle='M'
style={{ color: colors.primaryDefault }}
fontWeight='Bold'
/>
]}
/>
</CustomText>
)
})}
/>
2023-01-26 23:07:13 +01:00
<Stack.Screen
name='Tab-Shared-Filter'
component={TabSharedFilter}
2024-02-07 00:22:22 +01:00
options={({ navigation }) => ({
presentation: 'modal',
title: t('screenTabs:shared.filter.name'),
headerRight: () => (
<HeaderRight
type='text'
content={t('common:buttons.done')}
onPress={() => navigation.goBack()}
/>
)
})}
2023-01-26 23:07:13 +01:00
/>
<Stack.Screen
name='Tab-Shared-Hashtag'
component={TabSharedHashtag}
2024-02-07 00:22:22 +01:00
options={({
route: {
params: { tag_name }
}
}) => ({ title: `#${decodeURIComponent(tag_name)}` })}
/>
2022-04-29 23:57:18 +02:00
<Stack.Screen
name='Tab-Shared-History'
component={TabSharedHistory}
2024-02-07 00:22:22 +01:00
options={{ title: t('screenTabs:shared.history.name') }}
/>
2023-07-13 21:55:26 +02:00
<Stack.Screen
name='Tab-Shared-Mute'
component={TabSharedMute}
2024-02-07 00:22:22 +01:00
options={({
route: {
params: {
account: { acct }
}
}
}) => ({
presentation: 'modal',
headerLeft: () => <HeaderLeft type='text' content={t('common:buttons.cancel')} />,
title: t('screenTabs:shared.mute.name', { acct: `@${acct}` })
})}
2023-07-13 21:55:26 +02:00
/>
2022-12-22 01:21:51 +01:00
<Stack.Screen
name='Tab-Shared-Report'
component={TabSharedReport}
2024-02-07 00:22:22 +01:00
options={({
route: {
params: { account }
}
}) => ({
presentation: 'modal',
headerLeft: () => <HeaderLeft type='text' content={t('common:buttons.cancel')} />,
title: t('screenTabs:shared.report.name', { acct: `@${account.acct}` })
})}
2022-12-22 01:21:51 +01:00
/>
2022-12-03 16:50:54 +01:00
<Stack.Screen key='Tab-Shared-Search' name='Tab-Shared-Search' component={TabSharedSearch} />
2024-02-07 00:22:22 +01:00
<Stack.Screen
name='Tab-Shared-Toot'
component={TabSharedToot}
options={{ title: t('screenTabs:shared.toot.name') }}
/>
<Stack.Screen
name='Tab-Shared-Users'
component={TabSharedUsers}
options={({ route: { params } }) => ({
title: t(`shared.users.${params.reference}.${params.type}`, {
count: params.count
} as any) as any
})}
/>
</Stack.Group>
)
2020-11-21 13:19:05 +01:00
}
2022-11-20 16:14:08 +01:00
export default TabShared