tooot/src/screens/Shared/sharedScreens.tsx

155 lines
4.5 KiB
TypeScript
Raw Normal View History

2021-01-07 19:13:09 +01:00
import { HeaderLeft } from '@components/Header'
2021-01-07 22:18:14 +01:00
import { StackNavigationState, TypedNavigator } from '@react-navigation/native'
import { StackScreenProps } from '@react-navigation/stack'
2020-12-13 14:04:25 +01:00
import ScreenSharedAccount from '@screens/Shared/Account'
2021-01-04 18:29:02 +01:00
import ScreenSharedAnnouncements from '@screens/Shared/Announcements'
2021-01-07 22:18:14 +01:00
import Compose from '@screens/Shared/Compose'
2020-12-13 14:04:25 +01:00
import ScreenSharedHashtag from '@screens/Shared/Hashtag'
2021-01-04 18:29:02 +01:00
import ScreenSharedImagesViewer from '@screens/Shared/ImagesViewer'
import ScreenSharedRelationships from '@screens/Shared/Relationships'
2020-12-13 14:04:25 +01:00
import ScreenSharedSearch from '@screens/Shared/Search'
2021-01-07 22:18:14 +01:00
import ScreenSharedToot from '@screens/Shared/Toot'
2020-12-23 01:31:11 +01:00
import React from 'react'
2020-11-30 00:24:53 +01:00
import { useTranslation } from 'react-i18next'
2021-01-07 22:18:14 +01:00
import { NativeStackNavigationOptions } from 'react-native-screens/lib/typescript'
import {
NativeStackNavigationEventMap,
NativeStackNavigatorProps
} from 'react-native-screens/lib/typescript/types'
type BaseScreens =
| Nav.LocalStackParamList
| Nav.RemoteStackParamList
| Nav.NotificationsStackParamList
| Nav.MeStackParamList
export type SharedAccountProp = StackScreenProps<
BaseScreens,
'Screen-Shared-Account'
>
export type SharedAnnouncementsProp = StackScreenProps<
BaseScreens,
'Screen-Shared-Announcements'
>
export type SharedComposeProp = StackScreenProps<
BaseScreens,
'Screen-Shared-Compose'
>
export type SharedHashtagProp = StackScreenProps<
BaseScreens,
'Screen-Shared-Hashtag'
>
2020-11-21 13:19:05 +01:00
2021-01-07 22:18:14 +01:00
export type SharedImagesViewerProp = StackScreenProps<
BaseScreens,
'Screen-Shared-ImagesViewer'
>
export type SharedRelationshipsProp = StackScreenProps<
BaseScreens,
'Screen-Shared-Relationships'
>
export type SharedTootProp = StackScreenProps<BaseScreens, 'Screen-Shared-Toot'>
const sharedScreens = (
Stack: TypedNavigator<
BaseScreens,
StackNavigationState<Record<string, object | undefined>>,
NativeStackNavigationOptions,
NativeStackNavigationEventMap,
({
initialRouteName,
children,
screenOptions,
...rest
}: NativeStackNavigatorProps) => JSX.Element
>
) => {
2020-11-30 00:24:53 +01:00
const { t } = useTranslation()
2020-11-21 13:19:05 +01:00
return [
<Stack.Screen
key='Screen-Shared-Account'
name='Screen-Shared-Account'
component={ScreenSharedAccount}
2021-01-07 22:18:14 +01:00
options={({ navigation }: SharedAccountProp) => {
return {
headerTranslucent: true,
headerStyle: {
backgroundColor: `rgba(255, 255, 255, 0)`
},
headerCenter: () => null,
2020-12-26 23:27:53 +01:00
headerLeft: () => <HeaderLeft onPress={() => navigation.goBack()} />
}
}}
2020-11-21 13:19:05 +01:00
/>,
<Stack.Screen
2021-01-07 22:18:14 +01:00
key='Screen-Shared-Announcements'
name='Screen-Shared-Announcements'
component={ScreenSharedAnnouncements}
options={{
stackPresentation: 'transparentModal',
stackAnimation: 'fade'
}}
2020-11-21 13:19:05 +01:00
/>,
<Stack.Screen
2020-11-22 00:57:43 +01:00
key='Screen-Shared-Compose'
name='Screen-Shared-Compose'
component={Compose}
2020-11-21 13:19:05 +01:00
options={{
stackPresentation: 'fullScreenModal'
}}
2020-11-24 00:18:47 +01:00
/>,
<Stack.Screen
2021-01-07 22:18:14 +01:00
key='Screen-Shared-Hashtag'
name='Screen-Shared-Hashtag'
component={ScreenSharedHashtag}
options={({ route, navigation }: any) => ({
title: `#${decodeURIComponent(route.params.hashtag)}`,
2021-01-04 18:29:02 +01:00
headerLeft: () => <HeaderLeft onPress={() => navigation.goBack()} />
})}
2020-12-23 01:31:11 +01:00
/>,
2020-12-25 18:20:09 +01:00
<Stack.Screen
key='Screen-Shared-ImagesViewer'
name='Screen-Shared-ImagesViewer'
component={ScreenSharedImagesViewer}
options={{
stackPresentation: 'transparentModal',
stackAnimation: 'none'
}}
2021-01-04 18:29:02 +01:00
/>,
<Stack.Screen
key='Screen-Shared-Relationships'
name='Screen-Shared-Relationships'
component={ScreenSharedRelationships}
options={({ route, navigation }: any) => ({
title: route.params.account.display_name || route.params.account.name,
headerLeft: () => <HeaderLeft onPress={() => navigation.goBack()} />
})}
2021-01-07 22:18:14 +01:00
/>,
<Stack.Screen
key='Screen-Shared-Search'
name='Screen-Shared-Search'
component={ScreenSharedSearch}
options={({ navigation }: any) => ({
headerLeft: () => <HeaderLeft onPress={() => navigation.goBack()} />
})}
/>,
<Stack.Screen
key='Screen-Shared-Toot'
name='Screen-Shared-Toot'
component={ScreenSharedToot}
options={({ navigation }: any) => ({
title: t('sharedToot:heading'),
headerLeft: () => <HeaderLeft onPress={() => navigation.goBack()} />
})}
2020-11-21 13:19:05 +01:00
/>
]
}
export default sharedScreens