forked from keybase/client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroutes.desktop.tsx
95 lines (91 loc) · 4.45 KB
/
routes.desktop.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import * as Constants from '../constants/settings'
import * as Kb from '../common-adapters'
import * as React from 'react'
import {NavigationViewProps, createNavigator, StackRouter, SceneView} from '@react-navigation/core'
import * as Shim from '../router-v2/shim'
import FsTab from './files/container'
import AdvancedTab from './advanced/container'
import ChatTab from './chat/container'
import DisplayTab from './display/container'
import InvitationsTab from './invites/container'
import AccountTab from './account/container'
import FeedbackTab from './feedback/container'
import NotificationsTab from './notifications/container'
import DbNukeConfirm from './db-nuke-confirm/container'
import DeleteConfirm from './delete-confirm/container'
import InviteSent from './invite-generated/container'
import RemoveDevice from '../devices/device-revoke/container'
import LogOutTab from './logout/container'
import ChangePassword from './password/container'
import DisableCertPinningModal from './disable-cert-pinning-modal/container'
import {DeleteModal} from './account/confirm-delete'
import {Email, Phone, VerifyPhone} from './account/add-modals'
const settingsSubRoutes = {
[Constants.fsTab]: {getScreen: (): typeof FsTab => require('./files/container').default},
[Constants.advancedTab]: {getScreen: (): typeof AdvancedTab => require('./advanced/container').default},
[Constants.chatTab]: {getScreen: (): typeof ChatTab => require('./chat/container').default},
// TODO connect broken
[Constants.invitationsTab]: {
getScreen: (): typeof InvitationsTab => require('./invites/container').default,
},
[Constants.accountTab]: {getScreen: (): typeof AccountTab => require('./account/container').default},
[Constants.displayTab]: {getScreen: (): typeof DisplayTab => require('./display/container').default},
[Constants.feedbackTab]: {getScreen: (): typeof FeedbackTab => require('./feedback/container').default},
[Constants.notificationsTab]: {
getScreen: (): typeof NotificationsTab => require('./notifications/container').default,
},
dbNukeConfirm: {getScreen: (): typeof DbNukeConfirm => require('./db-nuke-confirm/container').default},
inviteSent: {getScreen: (): typeof InviteSent => require('./invite-generated/container').default},
removeDevice: {getScreen: (): typeof RemoveDevice => require('../devices/device-revoke/container').default},
}
const noScreenProps = {}
class SettingsSubNav extends React.PureComponent<NavigationViewProps<any>> {
render() {
const navigation = this.props.navigation
const index = navigation.state.index
const activeKey = navigation.state.routes[index].key
const descriptor = this.props.descriptors[activeKey]
const childNav = descriptor.navigation
const Settings = require('./').default
return (
<Kb.Box2 direction="horizontal" fullHeight={true} fullWidth={true}>
<Settings routeSelected={descriptor.state.routeName}>
<SceneView
navigation={childNav}
component={descriptor.getComponent()}
screenProps={this.props.screenProps || noScreenProps}
/>
</Settings>
</Kb.Box2>
)
}
}
const SettingsSubNavigator = createNavigator(
SettingsSubNav,
StackRouter(Shim.shim(settingsSubRoutes), {initialRouteName: Constants.accountTab}),
{}
)
SettingsSubNavigator.navigationOptions = {
title: 'Settings',
}
export const newRoutes = {
// MUST use screen and not getScreen for subnavs!
settingsRoot: {screen: SettingsSubNavigator},
}
export const newModalRoutes = {
[Constants.logOutTab]: {getScreen: (): typeof LogOutTab => require('./logout/container').default},
// TODO connect broken
changePassword: {getScreen: (): typeof ChangePassword => require('./password/container').default},
deleteConfirm: {getScreen: (): typeof DeleteConfirm => require('./delete-confirm/container').default},
disableCertPinningModal: {
getScreen: (): typeof DisableCertPinningModal =>
require('./disable-cert-pinning-modal/container').default,
},
modalFeedback: {getScreen: (): typeof FeedbackTab => require('../signup/feedback/container').default},
settingsAddEmail: {getScreen: (): typeof Email => require('./account/add-modals').Email},
settingsAddPhone: {getScreen: (): typeof Phone => require('./account/add-modals').Phone},
settingsDeleteAddress: {
getScreen: (): typeof DeleteModal => require('./account/confirm-delete').DeleteModal,
},
settingsVerifyPhone: {getScreen: (): typeof VerifyPhone => require('./account/add-modals').VerifyPhone},
}