mirror of
https://github.com/status-im/react-navigation.git
synced 2025-02-24 09:08:15 +00:00
remove support for deprecated navigation actions (#3595)
* remove support for deprecated navigation actions * remove deprecated action from flow definitions
This commit is contained in:
parent
ab758bcaaa
commit
276fb8f7b3
59
flow/react-navigation.js
vendored
59
flow/react-navigation.js
vendored
@ -71,25 +71,11 @@ declare module 'react-navigation' {
|
|||||||
key?: string,
|
key?: string,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
declare type DeprecatedNavigationNavigateAction = {|
|
|
||||||
type: 'Navigate',
|
|
||||||
routeName: string,
|
|
||||||
params?: NavigationParams,
|
|
||||||
|
|
||||||
// The action to run inside the sub-router
|
|
||||||
action?: NavigationNavigateAction | DeprecatedNavigationNavigateAction,
|
|
||||||
|};
|
|
||||||
|
|
||||||
declare export type NavigationBackAction = {|
|
declare export type NavigationBackAction = {|
|
||||||
type: 'Navigation/BACK',
|
type: 'Navigation/BACK',
|
||||||
key?: ?string,
|
key?: ?string,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
declare type DeprecatedNavigationBackAction = {|
|
|
||||||
type: 'Back',
|
|
||||||
key?: ?string,
|
|
||||||
|};
|
|
||||||
|
|
||||||
declare export type NavigationSetParamsAction = {|
|
declare export type NavigationSetParamsAction = {|
|
||||||
type: 'Navigation/SET_PARAMS',
|
type: 'Navigation/SET_PARAMS',
|
||||||
|
|
||||||
@ -100,26 +86,11 @@ declare module 'react-navigation' {
|
|||||||
params: NavigationParams,
|
params: NavigationParams,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
declare type DeprecatedNavigationSetParamsAction = {|
|
|
||||||
type: 'SetParams',
|
|
||||||
|
|
||||||
// The key of the route where the params should be set
|
|
||||||
key: string,
|
|
||||||
|
|
||||||
// The new params to merge into the existing route params
|
|
||||||
params: NavigationParams,
|
|
||||||
|};
|
|
||||||
|
|
||||||
declare export type NavigationInitAction = {|
|
declare export type NavigationInitAction = {|
|
||||||
type: 'Navigation/INIT',
|
type: 'Navigation/INIT',
|
||||||
params?: NavigationParams,
|
params?: NavigationParams,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
declare type DeprecatedNavigationInitAction = {|
|
|
||||||
type: 'Init',
|
|
||||||
params?: NavigationParams,
|
|
||||||
|};
|
|
||||||
|
|
||||||
declare export type NavigationResetAction = {|
|
declare export type NavigationResetAction = {|
|
||||||
type: 'Navigation/RESET',
|
type: 'Navigation/RESET',
|
||||||
index: number,
|
index: number,
|
||||||
@ -127,25 +98,11 @@ declare module 'react-navigation' {
|
|||||||
actions: Array<NavigationNavigateAction>,
|
actions: Array<NavigationNavigateAction>,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
declare type DeprecatedNavigationResetAction = {|
|
|
||||||
type: 'Reset',
|
|
||||||
index: number,
|
|
||||||
key?: ?string,
|
|
||||||
actions: Array<
|
|
||||||
NavigationNavigateAction | DeprecatedNavigationNavigateAction
|
|
||||||
>,
|
|
||||||
|};
|
|
||||||
|
|
||||||
declare export type NavigationUriAction = {|
|
declare export type NavigationUriAction = {|
|
||||||
type: 'Navigation/URI',
|
type: 'Navigation/URI',
|
||||||
uri: string,
|
uri: string,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
declare type DeprecatedNavigationUriAction = {|
|
|
||||||
type: 'Uri',
|
|
||||||
uri: string,
|
|
||||||
|};
|
|
||||||
|
|
||||||
declare export type NavigationReplaceAction = {|
|
declare export type NavigationReplaceAction = {|
|
||||||
+type: 'Navigation/REPLACE',
|
+type: 'Navigation/REPLACE',
|
||||||
+key: string,
|
+key: string,
|
||||||
@ -181,17 +138,6 @@ declare module 'react-navigation' {
|
|||||||
| NavigationSetParamsAction
|
| NavigationSetParamsAction
|
||||||
| NavigationResetAction;
|
| NavigationResetAction;
|
||||||
|
|
||||||
declare type DeprecatedNavigationAction =
|
|
||||||
| DeprecatedNavigationInitAction
|
|
||||||
| DeprecatedNavigationNavigateAction
|
|
||||||
| DeprecatedNavigationBackAction
|
|
||||||
| DeprecatedNavigationSetParamsAction
|
|
||||||
| DeprecatedNavigationResetAction;
|
|
||||||
|
|
||||||
declare export type PossiblyDeprecatedNavigationAction =
|
|
||||||
| NavigationAction
|
|
||||||
| DeprecatedNavigationAction;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NavigationState is a tree of routes for a single navigator, where each
|
* NavigationState is a tree of routes for a single navigator, where each
|
||||||
* child route may either be a NavigationScreenRoute or a
|
* child route may either be a NavigationScreenRoute or a
|
||||||
@ -482,7 +428,7 @@ declare module 'react-navigation' {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
declare export type NavigationDispatch = (
|
declare export type NavigationDispatch = (
|
||||||
action: PossiblyDeprecatedNavigationAction
|
action: NavigationAction
|
||||||
) => boolean;
|
) => boolean;
|
||||||
|
|
||||||
declare export type NavigationProp<S> = {
|
declare export type NavigationProp<S> = {
|
||||||
@ -789,9 +735,6 @@ declare module 'react-navigation' {
|
|||||||
(payload: { uri: string }): NavigationUriAction,
|
(payload: { uri: string }): NavigationUriAction,
|
||||||
toString: () => string,
|
toString: () => string,
|
||||||
},
|
},
|
||||||
mapDeprecatedActionAndWarn: (
|
|
||||||
action: PossiblyDeprecatedNavigationAction
|
|
||||||
) => NavigationAction,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
declare type _RouterProp<S: NavigationState, O: {}> = {
|
declare type _RouterProp<S: NavigationState, O: {}> = {
|
||||||
|
@ -106,59 +106,6 @@ const completeTransition = createAction(COMPLETE_TRANSITION, payload => ({
|
|||||||
key: payload && payload.key,
|
key: payload && payload.key,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const mapDeprecatedNavigateAction = action => {
|
|
||||||
if (action.type === 'Navigate') {
|
|
||||||
const payload = {
|
|
||||||
routeName: action.routeName,
|
|
||||||
params: action.params,
|
|
||||||
};
|
|
||||||
if (action.action) {
|
|
||||||
payload.action = mapDeprecatedNavigateAction(action.action);
|
|
||||||
}
|
|
||||||
return navigate(payload);
|
|
||||||
}
|
|
||||||
return action;
|
|
||||||
};
|
|
||||||
|
|
||||||
const mapDeprecatedAction = action => {
|
|
||||||
if (action.type === 'Back') {
|
|
||||||
return back(action);
|
|
||||||
} else if (action.type === 'Init') {
|
|
||||||
return init(action);
|
|
||||||
} else if (action.type === 'Navigate') {
|
|
||||||
return mapDeprecatedNavigateAction(action);
|
|
||||||
} else if (action.type === 'Reset') {
|
|
||||||
return reset({
|
|
||||||
index: action.index,
|
|
||||||
key: action.key,
|
|
||||||
actions: action.actions.map(mapDeprecatedNavigateAction),
|
|
||||||
});
|
|
||||||
} else if (action.type === 'SetParams') {
|
|
||||||
return setParams(action);
|
|
||||||
}
|
|
||||||
return action;
|
|
||||||
};
|
|
||||||
|
|
||||||
const mapDeprecatedActionAndWarn = action => {
|
|
||||||
const newAction = mapDeprecatedAction(action);
|
|
||||||
if (newAction !== action) {
|
|
||||||
const oldType = action.type;
|
|
||||||
const newType = newAction.type;
|
|
||||||
console.warn(
|
|
||||||
[
|
|
||||||
`The action type '${oldType}' has been renamed to '${newType}'.`,
|
|
||||||
`'${oldType}' will continue to work while in beta but will be removed`,
|
|
||||||
'in the first major release. Moving forward, you should use the',
|
|
||||||
'action constants and action creators exported by this library in',
|
|
||||||
"the 'actions' object.",
|
|
||||||
'See https://github.com/react-community/react-navigation/pull/120 for',
|
|
||||||
'more details.',
|
|
||||||
].join(' ')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return newAction;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
// Action constants
|
// Action constants
|
||||||
BACK,
|
BACK,
|
||||||
@ -185,7 +132,4 @@ export default {
|
|||||||
setParams,
|
setParams,
|
||||||
uri,
|
uri,
|
||||||
completeTransition,
|
completeTransition,
|
||||||
|
|
||||||
// TODO: Remove once old actions are deprecated
|
|
||||||
mapDeprecatedActionAndWarn,
|
|
||||||
};
|
};
|
||||||
|
@ -166,8 +166,7 @@ export default function createNavigationContainer(Component) {
|
|||||||
|
|
||||||
// Per-tick temporary storage for state.nav
|
// Per-tick temporary storage for state.nav
|
||||||
|
|
||||||
dispatch = inputAction => {
|
dispatch = action => {
|
||||||
const action = NavigationActions.mapDeprecatedActionAndWarn(inputAction);
|
|
||||||
if (!this._isStateful()) {
|
if (!this._isStateful()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1506,40 +1506,6 @@ describe('StackRouter', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Maps old actions (uses "Handles the reset action" test)', () => {
|
|
||||||
global.console.warn = jest.fn();
|
|
||||||
const router = StackRouter({
|
|
||||||
Foo: {
|
|
||||||
screen: () => <div />,
|
|
||||||
},
|
|
||||||
Bar: {
|
|
||||||
screen: () => <div />,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const initAction = NavigationActions.mapDeprecatedActionAndWarn({
|
|
||||||
type: 'Init',
|
|
||||||
});
|
|
||||||
const state = router.getStateForAction(initAction);
|
|
||||||
const resetAction = NavigationActions.mapDeprecatedActionAndWarn({
|
|
||||||
type: 'Reset',
|
|
||||||
actions: [
|
|
||||||
{ type: 'Navigate', routeName: 'Foo', params: { bar: '42' } },
|
|
||||||
{ type: 'Navigate', routeName: 'Bar' },
|
|
||||||
],
|
|
||||||
index: 1,
|
|
||||||
});
|
|
||||||
const state2 = router.getStateForAction(resetAction, state);
|
|
||||||
expect(state2 && state2.index).toEqual(1);
|
|
||||||
expect(state2 && state2.routes[0].params).toEqual({ bar: '42' });
|
|
||||||
expect(state2 && state2.routes[0].routeName).toEqual('Foo');
|
|
||||||
expect(state2 && state2.routes[1].routeName).toEqual('Bar');
|
|
||||||
expect(console.warn).toBeCalledWith(
|
|
||||||
expect.stringContaining(
|
|
||||||
"The action type 'Init' has been renamed to 'Navigation/INIT'"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('URI encoded string get passed to deep link', () => {
|
test('URI encoded string get passed to deep link', () => {
|
||||||
const uri = 'people/2018%2F02%2F07';
|
const uri = 'people/2018%2F02%2F07';
|
||||||
const action = TestStackRouter.getActionForPathAndParams(uri);
|
const action = TestStackRouter.getActionForPathAndParams(uri);
|
||||||
|
@ -593,29 +593,6 @@ describe('TabRouter', () => {
|
|||||||
expect(path).toEqual('f/Baz');
|
expect(path).toEqual('f/Baz');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Maps old actions (uses "getStateForAction returns null when navigating to same tab" test)', () => {
|
|
||||||
global.console.warn = jest.fn();
|
|
||||||
const router = TabRouter(
|
|
||||||
{ Foo: BareLeafRouteConfig, Bar: BareLeafRouteConfig },
|
|
||||||
{ initialRouteName: 'Bar' }
|
|
||||||
);
|
|
||||||
const initAction = NavigationActions.mapDeprecatedActionAndWarn({
|
|
||||||
type: 'Init',
|
|
||||||
});
|
|
||||||
const state = router.getStateForAction(initAction);
|
|
||||||
const navigateAction = NavigationActions.mapDeprecatedActionAndWarn({
|
|
||||||
type: 'Navigate',
|
|
||||||
routeName: 'Bar',
|
|
||||||
});
|
|
||||||
const state2 = router.getStateForAction(navigateAction, state);
|
|
||||||
expect(state2).toEqual(null);
|
|
||||||
expect(console.warn).toBeCalledWith(
|
|
||||||
expect.stringContaining(
|
|
||||||
"The action type 'Init' has been renamed to 'Navigation/INIT'"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Can navigate to other tab (no router) with params', () => {
|
test('Can navigate to other tab (no router) with params', () => {
|
||||||
const ScreenA = () => <div />;
|
const ScreenA = () => <div />;
|
||||||
const ScreenB = () => <div />;
|
const ScreenB = () => <div />;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user