Skip to content

Commit 91fdab3

Browse files
WIP
1 parent 7123555 commit 91fdab3

8 files changed

Lines changed: 29 additions & 24 deletions

File tree

shared/chat/inbox-and-conversation-header.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@ import type {StyleOverride} from '@/common-adapters/markdown'
55
import SearchRow from './inbox/search-row'
66
import NewChatButton from './inbox/new-chat-button'
77
import {useRoute} from '@react-navigation/native'
8-
import type {RootRouteProps} from '@/router-v2/route-params'
8+
import type {RouteProp} from '@react-navigation/native'
9+
import {getRouteParamsFromRoute} from '@/router-v2/route-params'
10+
import type {RootParamList} from '@/router-v2/route-params'
911
import {useUsersState} from '@/stores/users'
1012
import {useCurrentUserState} from '@/stores/current-user'
1113
import * as Teams from '@/stores/teams'
1214

1315
const Header = () => {
14-
const {params} = useRoute<RootRouteProps<'chatRoot'>>()
16+
const route = useRoute<RouteProp<RootParamList, 'chatRoot'>>()
17+
const params = getRouteParamsFromRoute<'chatRoot'>(route)
1518
return (
1619
<Chat.ChatProvider
1720
canBeNull={true}
@@ -26,7 +29,8 @@ const Header = () => {
2629
}
2730

2831
const Header2 = () => {
29-
const {params} = useRoute<RootRouteProps<'chatRoot'>>()
32+
const route = useRoute<RouteProp<RootParamList, 'chatRoot'>>()
33+
const params = getRouteParamsFromRoute<'chatRoot'>(route)
3034
const username = useCurrentUserState(s => s.username)
3135
const infoPanelShowing = !!params?.infoPanel
3236
const data = Chat.useChatContext(

shared/constants/init/index.native.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ export const initPlatformListener = () => {
275275
routeName = cur
276276
}
277277
const ap = getVisiblePath()
278-
ap.some(r => {
278+
ap.some((r: ReturnType<typeof getVisiblePath>[number]) => {
279279
if (r.name === 'chatConversation') {
280280
const rParams = r.params as undefined | {conversationIDKey?: T.Chat.ConversationIDKey}
281281
param = {selectedConversationIDKey: rParams?.conversationIDKey}

shared/constants/router.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ export const getModalStack = (navState?: T.Immutable<NavState>) => {
124124
if (!_isLoggedIn(rs)) {
125125
return []
126126
}
127-
return (rs.routes?.slice(1) ?? []).filter(r => !rootNonModalRouteNames.has(r.name))
127+
return (rs.routes?.slice(1) ?? []).filter((r: Route) => !rootNonModalRouteNames.has(r.name))
128128
}
129129

130130
export const getVisibleScreen = (navState?: T.Immutable<NavState>, _inludeModals?: boolean) => {
@@ -184,7 +184,7 @@ export const clearModals = () => {
184184
}
185185
const rootRoutes = ns?.routes ?? []
186186
const keepRoutes = rootRoutes.filter(
187-
(route, index) => index === 0 || rootNonModalRouteNames.has(route.name)
187+
(route: Route, index: number) => index === 0 || rootNonModalRouteNames.has(route.name)
188188
)
189189
if (keepRoutes.length !== rootRoutes.length) {
190190
n.dispatch({

shared/constants/types/router.tsx

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
import type * as Styles from '@/styles'
2-
import type {RootParamList as KBRootParamList} from '@/router-v2/route-params'
32
import type {NativeStackNavigationProp, NativeStackNavigationOptions} from '@react-navigation/native-stack'
4-
import type {RouteProp} from '@react-navigation/native'
3+
import type {ParamListBase, RouteProp} from '@react-navigation/native'
54
import type {HeaderBackButtonProps} from '@react-navigation/elements'
65

7-
export type GetOptionsParams<RouteName extends keyof KBRootParamList = keyof KBRootParamList> = {
8-
navigation: NativeStackNavigationProp<KBRootParamList, RouteName>
9-
route: RouteProp<KBRootParamList, RouteName>
6+
export type GetOptionsParams<RouteName extends string = string> = {
7+
navigation: NativeStackNavigationProp<ParamListBase, RouteName>
8+
route: RouteProp<ParamListBase, RouteName>
109
}
1110

1211
// Type for screen components that receive navigation props
13-
export type ScreenProps<RouteName extends keyof KBRootParamList = keyof KBRootParamList> = {
14-
navigation: NativeStackNavigationProp<KBRootParamList, RouteName>
15-
route: RouteProp<KBRootParamList, RouteName>
12+
export type ScreenProps<RouteName extends string = string> = {
13+
navigation: NativeStackNavigationProp<ParamListBase, RouteName>
14+
route: RouteProp<ParamListBase, RouteName>
1615
}
1716

1817
export type ScreenComponentProps = {
1918
route: {params: any}
20-
navigation: NativeStackNavigationProp<KBRootParamList>
19+
navigation: NativeStackNavigationProp<ParamListBase, string>
2120
}
2221
// Properties consumed by our layout functions (not React Navigation)
2322
export type LayoutOptions = {

shared/router-v2/common.native.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ const styles = Kb.Styles.styleSheetCreate(() => ({
8787

8888
export const useSubnavTabAction = (navigation: NavigationContainerRef<object>, state: NavState) => {
8989
const onSelectTab = (tab: string) => {
90-
const route = state?.routes?.find(r => r.name === tab)
90+
const route = state?.routes?.find((r: NonNullable<NavState['routes']>[number]) => r.name === tab)
9191
const event = route
9292
? navigation.emit({
9393
canPreventDefault: true,

shared/router-v2/routes.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import {newModalRoutes as incomingShareNewModalRoutes} from '../incoming-share/r
1414
import type * as React from 'react'
1515
import * as Tabs from '@/constants/tabs'
1616
import type {GetOptions, GetOptionsParams, GetOptionsRet, RouteDef, RouteMap} from '@/constants/types/router'
17-
import type {RootParamList as KBRootParamList} from '@/router-v2/route-params'
1817
import type {NativeStackNavigationOptions} from '@react-navigation/native-stack'
1918

2019
// We have normal routes, modal routes, and logged out routes.
@@ -165,12 +164,12 @@ export function routeMapToScreenElements(
165164
isLoggedOut: boolean,
166165
isTabScreen: boolean
167166
) {
168-
return (Object.keys(rs) as Array<keyof KBRootParamList>).flatMap(name => {
169-
const rd = rs[name as string]
167+
return Object.keys(rs).flatMap(name => {
168+
const rd = rs[name]
170169
if (!rd) return []
171170
return [
172171
<Screen
173-
key={String(name)}
172+
key={name}
174173
name={name}
175174
component={rd.screen}
176175
layout={makeLayoutFn(isModal, isLoggedOut, isTabScreen, rd.getOptions)}

shared/router-v2/screen-layout.desktop.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as Kb from '@/common-adapters'
22
import * as React from 'react'
33
import * as C from '@/constants'
44
import type {GetOptions, GetOptionsParams, GetOptionsRet} from '@/constants/types/router'
5-
import type {RootParamList as KBRootParamList} from '@/router-v2/route-params'
5+
import type {ParamListBase} from '@react-navigation/native'
66
import type {NativeStackNavigationProp} from '@react-navigation/native-stack'
77

88
type ModalHeaderProps = {
@@ -71,7 +71,7 @@ const useMouseClick = (navigation: NativeStackNavigationProp<KBRootParamList>, n
7171
type ModalWrapperProps = {
7272
children: React.ReactNode
7373
navigationOptions?: GetOptionsRet
74-
navigation: NativeStackNavigationProp<KBRootParamList>
74+
navigation: NativeStackNavigationProp<ParamListBase, string>
7575
}
7676

7777
const ModalWrapper = (p: ModalWrapperProps) => {

shared/teams/get-options.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import {HeaderRightActions} from './main/header'
33
import {useSafeNavigation} from '@/util/safe-navigation'
44
import {useTeamsState} from '@/stores/teams'
55
import {useNavigation, useRoute} from '@react-navigation/native'
6-
import type {RootParamList, RootRouteProps} from '@/router-v2/route-params'
6+
import type {RouteProp} from '@react-navigation/native'
7+
import type {RootParamList} from '@/router-v2/route-params'
8+
import {getRouteParamsFromRoute} from '@/router-v2/route-params'
79
import type {NativeStackNavigationProp} from '@react-navigation/native-stack'
810

911
const useHeaderActions = () => {
@@ -16,7 +18,8 @@ const useHeaderActions = () => {
1618
}
1719

1820
const TeamsFilter = () => {
19-
const params = useRoute<RootRouteProps<'teamsRoot'>>().params ?? {}
21+
const route = useRoute<RouteProp<RootParamList, 'teamsRoot'>>()
22+
const params = getRouteParamsFromRoute<'teamsRoot'>(route) ?? {}
2023
const navigation = useNavigation<NativeStackNavigationProp<RootParamList, 'teamsRoot'>>()
2124
const filterValue = params.filter ?? ''
2225
const numTeams = useTeamsState(s => s.teamMeta.size)

0 commit comments

Comments
 (0)