Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions shared/common-adapters/list.native.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ function List<T>({ref, ...p}: Props<T>) {
ref={ref as any}
{...listProps}
testID={p.testID}
contentInsetAdjustmentBehavior="automatic"
keyboardShouldPersistTaps={p.keyboardShouldPersistTaps ?? 'handled'}
overScrollMode="never"
bounces={p.bounces}
Expand Down
2 changes: 2 additions & 0 deletions shared/common-adapters/scroll-view.native.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ import {ScrollView, type ScrollViewProps} from 'react-native'
function BetterScrollView(props: ScrollViewProps & {ref?: React.Ref<ScrollView>}) {
const {ref, ...rest} = props
const keyboardShouldPersistTaps = props.keyboardShouldPersistTaps ?? 'handled'
const contentInsetAdjustmentBehavior = props.contentInsetAdjustmentBehavior ?? 'automatic'
return (
<ScrollView
ref={ref}
{...rest}
contentInsetAdjustmentBehavior={contentInsetAdjustmentBehavior}
keyboardShouldPersistTaps={keyboardShouldPersistTaps}
overScrollMode="never"
/>
Expand Down
10 changes: 7 additions & 3 deletions shared/router-v2/route-params.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,13 @@ export type ParamRouteKeys = Exclude<RouteKeys, NoParamRouteKeys>
export type AllOptionalParamRouteKeys = {
[K in ParamRouteKeys]: {} extends NonNullable<RootParamList[K]> ? K : never
}[ParamRouteKeys]
export type NavigateAppendArg<RouteName extends RouteKeys> = RootParamList[RouteName] extends undefined
? RouteName
: {name: RouteName; params: RootParamList[RouteName]}
export type NavigateAppendArg<RouteName extends RouteKeys> = RouteName extends RouteName
? RootParamList[RouteName] extends undefined
? RouteName
: {} extends NonNullable<RootParamList[RouteName]>
? RouteName | {name: RouteName; params: RootParamList[RouteName]}
: {name: RouteName; params: RootParamList[RouteName]}
: never
export type NavigateAppendType = NavigateAppendArg<RouteKeys>
export type RootRouteProps<RouteName extends keyof RootParamList> = RouteProp<RootParamList, RouteName>

Expand Down
2 changes: 1 addition & 1 deletion shared/settings/root-phone.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ function SettingsNav() {
]

return (
<Kb.ScrollView contentInsetAdjustmentBehavior="automatic" style={Kb.Styles.globalStyles.fullHeight}>
<Kb.ScrollView style={Kb.Styles.globalStyles.fullHeight}>
{sections.map(section => (
<React.Fragment key={section.title || '_top'}>
{section.title ? (
Expand Down
16 changes: 3 additions & 13 deletions shared/util/safe-navigation.tsx
Original file line number Diff line number Diff line change
@@ -1,24 +1,14 @@
import * as C from '@/constants'
import {useIsFocused} from '@react-navigation/core'
import type {AllOptionalParamRouteKeys, NoParamRouteKeys, ParamRouteKeys, RootParamList} from '@/router-v2/route-params'
import type {NavigateAppendType} from '@/router-v2/route-params'

export const useSafeNavigation = () => {
const isFocused = useIsFocused()
const navigateUp = C.Router2.navigateUp
const navigateAppend = C.Router2.navigateAppend
function safeNavigateAppend<RouteName extends NoParamRouteKeys | AllOptionalParamRouteKeys>(path: RouteName, replace?: boolean): void
function safeNavigateAppend<RouteName extends ParamRouteKeys>(
path: {name: RouteName; params: RootParamList[RouteName]},
replace?: boolean
): void
function safeNavigateAppend(
path: NoParamRouteKeys | AllOptionalParamRouteKeys | {name: ParamRouteKeys; params: object | undefined},
replace?: boolean
) {
return isFocused && navigateAppend(path as never, replace)
}
return {
safeNavigateAppend,
safeNavigateAppend: (path: NavigateAppendType, replace?: boolean) =>
isFocused && navigateAppend(path as never, replace),
safeNavigateUp: () => isFocused && navigateUp(),
}
}