Skip to content

Commit

Permalink
feat: update helper types to have navigator specific methods
Browse files Browse the repository at this point in the history
  • Loading branch information
satya164 committed Oct 23, 2020
1 parent 7196889 commit f51086e
Show file tree
Hide file tree
Showing 14 changed files with 45 additions and 8 deletions.
Expand Up @@ -6,6 +6,7 @@ import {
TabRouter,
TabRouterOptions,
TabNavigationState,
TabActionHelpers,
ParamListBase,
} from '@react-navigation/native';
import BottomTabView from '../views/BottomTabView';
Expand All @@ -30,6 +31,7 @@ function BottomTabNavigator({
const { state, descriptors, navigation } = useNavigationBuilder<
TabNavigationState<ParamListBase>,
TabRouterOptions,
TabActionHelpers<ParamListBase>,
BottomTabNavigationOptions,
BottomTabNavigationEventMap
>(TabRouter, {
Expand Down
3 changes: 2 additions & 1 deletion packages/bottom-tabs/src/types.tsx
Expand Up @@ -33,7 +33,8 @@ export type LabelPosition = 'beside-icon' | 'below-icon';
export type BottomTabNavigationHelpers = NavigationHelpers<
ParamListBase,
BottomTabNavigationEventMap
>;
> &
TabActionHelpers<ParamListBase>;

export type BottomTabNavigationProp<
ParamList extends ParamListBase,
Expand Down
4 changes: 3 additions & 1 deletion packages/compat/src/createSwitchNavigator.tsx
Expand Up @@ -5,6 +5,7 @@ import {
TabRouter,
TabRouterOptions,
TabNavigationState,
TabActionHelpers,
ParamListBase,
} from '@react-navigation/native';
import createCompatNavigatorFactory from './createCompatNavigatorFactory';
Expand All @@ -16,7 +17,8 @@ function SwitchNavigator(props: Props) {
TabNavigationState<ParamListBase>,
TabRouterOptions,
{},
{}
{},
TabActionHelpers<ParamListBase>
>(TabRouter, props);

return descriptors[state.routes[state.index].key].render();
Expand Down
12 changes: 12 additions & 0 deletions packages/core/src/__tests__/useDescriptors.test.tsx
Expand Up @@ -22,6 +22,7 @@ it('sets options with options prop as an object', () => {
const { state, descriptors } = useNavigationBuilder<
NavigationState,
any,
{},
{ title?: string },
any
>(MockRouter, props);
Expand Down Expand Up @@ -67,6 +68,7 @@ it('sets options with options prop as a fuction', () => {
const { state, descriptors } = useNavigationBuilder<
NavigationState,
any,
{},
{ title?: string },
any
>(MockRouter, props);
Expand Down Expand Up @@ -113,6 +115,7 @@ it('sets options with screenOptions prop as an object', () => {
const { state, descriptors } = useNavigationBuilder<
NavigationState,
any,
{},
{ title?: string },
any
>(MockRouter, props);
Expand Down Expand Up @@ -173,6 +176,7 @@ it('sets options with screenOptions prop as a fuction', () => {
const { state, descriptors } = useNavigationBuilder<
NavigationState,
any,
{},
{ title?: string },
any
>(MockRouter, props);
Expand Down Expand Up @@ -245,6 +249,7 @@ it('sets initial options with setOptions', () => {
const { state, descriptors } = useNavigationBuilder<
NavigationState,
any,
{},
{
title?: string;
color?: string;
Expand Down Expand Up @@ -302,6 +307,7 @@ it('updates options with setOptions', () => {
NavigationState,
any,
any,
any,
any
>(MockRouter, props);
const { render, options } = descriptors[state.routes[state.index].key];
Expand Down Expand Up @@ -378,6 +384,7 @@ it("returns correct value for canGoBack when it's not overridden", () => {
const { state, descriptors } = useNavigationBuilder<
NavigationState,
any,
{},
{ title?: string },
any
>(MockRouter, props);
Expand Down Expand Up @@ -441,6 +448,7 @@ it(`returns false for canGoBack when current router doesn't handle GO_BACK`, ()
NavigationState,
any,
any,
any,
any
>(TestRouter, props);

Expand Down Expand Up @@ -491,6 +499,7 @@ it('returns true for canGoBack when current router handles GO_BACK', () => {
const { state, descriptors } = useNavigationBuilder<
NavigationState,
any,
{},
{ title?: string },
any
>(ParentRouter, props);
Expand All @@ -501,6 +510,7 @@ it('returns true for canGoBack when current router handles GO_BACK', () => {
const { state, descriptors } = useNavigationBuilder<
NavigationState,
any,
{},
{ title?: string },
any
>(MockRouter, props);
Expand Down Expand Up @@ -558,6 +568,7 @@ it('returns true for canGoBack when parent router handles GO_BACK', () => {
const { state, descriptors } = useNavigationBuilder<
NavigationState,
any,
{},
{ title?: string },
any
>(OverrodeRouter, props);
Expand All @@ -568,6 +579,7 @@ it('returns true for canGoBack when parent router handles GO_BACK', () => {
const { state, descriptors } = useNavigationBuilder<
NavigationState,
any,
{},
{ title?: string },
any
>(MockRouter, props);
Expand Down
8 changes: 7 additions & 1 deletion packages/core/src/useNavigationBuilder.tsx
Expand Up @@ -182,6 +182,7 @@ const getRouteConfigsFromChildren = <
export default function useNavigationBuilder<
State extends NavigationState,
RouterOptions extends DefaultRouterOptions,
ActionHelpers extends Record<string, () => void>,
ScreenOptions extends {},
EventMap extends Record<string, any>
>(
Expand Down Expand Up @@ -484,7 +485,12 @@ export default function useNavigationBuilder<
setState,
});

const navigation = useNavigationHelpers<State, NavigationAction, EventMap>({
const navigation = useNavigationHelpers<
State,
ActionHelpers,
NavigationAction,
EventMap
>({
onAction,
getState,
emitter,
Expand Down
4 changes: 3 additions & 1 deletion packages/core/src/useNavigationHelpers.tsx
Expand Up @@ -31,6 +31,7 @@ type Options<State extends NavigationState, Action extends NavigationAction> = {
*/
export default function useNavigationHelpers<
State extends NavigationState,
ActionHelpers extends Record<string, () => void>,
Action extends NavigationAction,
EventMap extends Record<string, any>
>({ onAction, getState, emitter, router }: Options<State, Action>) {
Expand Down Expand Up @@ -85,7 +86,8 @@ export default function useNavigationHelpers<
dangerouslyGetParent: () => parentNavigationHelpers as any,
dangerouslyGetState: getState,
} as NavigationHelpers<ParamListBase, EventMap> &
(NavigationProp<ParamListBase, string, any, any, any> | undefined);
(NavigationProp<ParamListBase, string, any, any, any> | undefined) &
ActionHelpers;
}, [
emitter.emit,
getState,
Expand Down
2 changes: 2 additions & 0 deletions packages/drawer/src/navigators/createDrawerNavigator.tsx
Expand Up @@ -6,6 +6,7 @@ import {
DrawerNavigationState,
DrawerRouterOptions,
DrawerRouter,
DrawerActionHelpers,
ParamListBase,
} from '@react-navigation/native';

Expand All @@ -31,6 +32,7 @@ function DrawerNavigator({
const { state, descriptors, navigation } = useNavigationBuilder<
DrawerNavigationState<ParamListBase>,
DrawerRouterOptions,
DrawerActionHelpers<ParamListBase>,
DrawerNavigationOptions,
DrawerNavigationEventMap
>(DrawerRouter, {
Expand Down
3 changes: 2 additions & 1 deletion packages/drawer/src/types.tsx
Expand Up @@ -201,7 +201,8 @@ export type DrawerNavigationEventMap = {
export type DrawerNavigationHelpers = NavigationHelpers<
ParamListBase,
DrawerNavigationEventMap
>;
> &
DrawerActionHelpers<ParamListBase>;

export type DrawerNavigationProp<
ParamList extends ParamListBase,
Expand Down
Expand Up @@ -6,6 +6,7 @@ import {
TabRouter,
TabRouterOptions,
TabNavigationState,
TabActionHelpers,
ParamListBase,
} from '@react-navigation/native';

Expand All @@ -30,6 +31,7 @@ function MaterialBottomTabNavigator({
const { state, descriptors, navigation } = useNavigationBuilder<
TabNavigationState<ParamListBase>,
TabRouterOptions,
TabActionHelpers<ParamListBase>,
MaterialBottomTabNavigationOptions,
MaterialBottomTabNavigationEventMap
>(TabRouter, {
Expand Down
3 changes: 2 additions & 1 deletion packages/material-bottom-tabs/src/types.tsx
Expand Up @@ -19,7 +19,8 @@ export type MaterialBottomTabNavigationEventMap = {
export type MaterialBottomTabNavigationHelpers = NavigationHelpers<
ParamListBase,
MaterialBottomTabNavigationEventMap
>;
> &
TabActionHelpers<ParamListBase>;

export type MaterialBottomTabNavigationProp<
ParamList extends ParamListBase,
Expand Down
Expand Up @@ -6,6 +6,7 @@ import {
TabRouter,
TabRouterOptions,
TabNavigationState,
TabActionHelpers,
ParamListBase,
} from '@react-navigation/native';
import MaterialTopTabView from '../views/MaterialTopTabView';
Expand All @@ -29,6 +30,7 @@ function MaterialTopTabNavigator({
const { state, descriptors, navigation } = useNavigationBuilder<
TabNavigationState<ParamListBase>,
TabRouterOptions,
TabActionHelpers<ParamListBase>,
MaterialTopTabNavigationOptions,
MaterialTopTabNavigationEventMap
>(TabRouter, {
Expand Down
3 changes: 2 additions & 1 deletion packages/material-top-tabs/src/types.tsx
Expand Up @@ -37,7 +37,8 @@ export type MaterialTopTabNavigationEventMap = {
export type MaterialTopTabNavigationHelpers = NavigationHelpers<
ParamListBase,
MaterialTopTabNavigationEventMap
>;
> &
TabActionHelpers<ParamListBase>;

export type MaterialTopTabNavigationProp<
ParamList extends ParamListBase,
Expand Down
2 changes: 2 additions & 0 deletions packages/stack/src/navigators/createStackNavigator.tsx
Expand Up @@ -10,6 +10,7 @@ import {
StackNavigationState,
StackActions,
ParamListBase,
StackActionHelpers,
} from '@react-navigation/native';
import StackView from '../views/Stack/StackView';
import type {
Expand Down Expand Up @@ -39,6 +40,7 @@ function StackNavigator({
const { state, descriptors, navigation } = useNavigationBuilder<
StackNavigationState<ParamListBase>,
StackRouterOptions,
StackActionHelpers<ParamListBase>,
StackNavigationOptions,
StackNavigationEventMap
>(StackRouter, {
Expand Down
3 changes: 2 additions & 1 deletion packages/stack/src/types.tsx
Expand Up @@ -44,7 +44,8 @@ export type StackNavigationEventMap = {
export type StackNavigationHelpers = NavigationHelpers<
ParamListBase,
StackNavigationEventMap
>;
> &
StackActionHelpers<ParamListBase>;

export type StackNavigationProp<
ParamList extends ParamListBase,
Expand Down

0 comments on commit f51086e

Please sign in to comment.