Revert "StackRouter block actions while transitioning (#3469)"

This reverts commit 858a0d7a53.
This commit is contained in:
Brent Vatne
2018-02-08 11:49:25 -08:00
parent ea19ceaa6a
commit 5641b42975
4 changed files with 21 additions and 48 deletions

View File

@@ -45,9 +45,6 @@ const navigate = createAction(NAVIGATE, payload => {
if (payload.key) {
action.key = payload.key;
}
if (payload.immediate) {
action.immediate = payload.immediate;
}
return action;
});
@@ -73,9 +70,6 @@ const push = createAction(PUSH, payload => {
if (payload.action) {
action.action = payload.action;
}
if (payload.immediate) {
action.immediate = payload.immediate;
}
return action;
});

View File

@@ -109,7 +109,7 @@ describe('NavigationContainer', () => {
// First dispatch
expect(
navigationContainer.dispatch(
NavigationActions.navigate({ routeName: 'bar', immediate: true })
NavigationActions.navigate({ routeName: 'bar' })
)
).toEqual(true);
@@ -119,7 +119,7 @@ describe('NavigationContainer', () => {
// Second dispatch
expect(
navigationContainer.dispatch(
NavigationActions.navigate({ routeName: 'baz', immediate: true })
NavigationActions.navigate({ routeName: 'baz' })
)
).toEqual(true);
@@ -147,7 +147,7 @@ describe('NavigationContainer', () => {
// First dispatch
expect(
navigationContainer.dispatch(
NavigationActions.navigate({ routeName: 'bar', immediate: true })
NavigationActions.navigate({ routeName: 'bar' })
)
).toEqual(true);
@@ -157,28 +157,28 @@ describe('NavigationContainer', () => {
// Second dispatch
expect(
navigationContainer.dispatch(
NavigationActions.navigate({ routeName: 'baz', immediate: true })
NavigationActions.navigate({ routeName: 'baz' })
)
).toEqual(true);
// Third dispatch
expect(
navigationContainer.dispatch(
NavigationActions.navigate({ routeName: 'car', immediate: true })
NavigationActions.navigate({ routeName: 'car' })
)
).toEqual(true);
// Fourth dispatch
expect(
navigationContainer.dispatch(
NavigationActions.navigate({ routeName: 'dog', immediate: true })
NavigationActions.navigate({ routeName: 'dog' })
)
).toEqual(true);
// Fifth dispatch
expect(
navigationContainer.dispatch(
NavigationActions.navigate({ routeName: 'elk', immediate: true })
NavigationActions.navigate({ routeName: 'elk' })
)
).toEqual(true);

View File

@@ -148,17 +148,6 @@ export default (routeConfigs, stackConfig = {}) => {
};
}
if (
action.type === NavigationActions.COMPLETE_TRANSITION &&
(action.key == null || action.key === state.key) &&
state.isTransitioning
) {
return {
...state,
isTransitioning: false,
};
}
// Check if a child scene wants to handle the action as long as it is not a reset to the root stack
if (action.type !== NavigationActions.RESET || action.key !== null) {
const keyIndex = action.key
@@ -229,10 +218,6 @@ export default (routeConfigs, stackConfig = {}) => {
behavesLikePushAction(action) &&
childRouters[action.routeName] !== undefined
) {
if (state.isTransitioning) {
return { ...state };
}
const childRouter = childRouters[action.routeName];
let route;
@@ -305,6 +290,17 @@ export default (routeConfigs, stackConfig = {}) => {
};
}
if (
action.type === NavigationActions.COMPLETE_TRANSITION &&
(action.key == null || action.key === state.key) &&
state.isTransitioning
) {
return {
...state,
isTransitioning: false,
};
}
// Handle navigation to other child routers that are not yet pushed
if (behavesLikePushAction(action)) {
const childRouterNames = Object.keys(childRouters);

View File

@@ -493,23 +493,6 @@ describe('StackRouter', () => {
expect(poppedImmediatelyState.isTransitioning).toBe(false);
});
test('Navigate does not happen while transitioning', () => {
const TestRouter = StackRouter({
foo: { screen: () => <div /> },
bar: { screen: () => <div /> },
});
const initState = {
...TestRouter.getStateForAction(NavigationActions.init()),
isTransitioning: true,
};
const pushedState = TestRouter.getStateForAction(
NavigationActions.navigate({ routeName: 'bar' }),
initState
);
expect(pushedState.index).toEqual(0);
expect(pushedState.routes.length).toEqual(1);
});
test('Navigate Pushes duplicate routeName', () => {
const TestRouter = StackRouter({
foo: { screen: () => <div /> },
@@ -517,13 +500,13 @@ describe('StackRouter', () => {
});
const initState = TestRouter.getStateForAction(NavigationActions.init());
const pushedState = TestRouter.getStateForAction(
NavigationActions.navigate({ routeName: 'bar', immediate: true }),
NavigationActions.navigate({ routeName: 'bar' }),
initState
);
expect(pushedState.index).toEqual(1);
expect(pushedState.routes[1].routeName).toEqual('bar');
const pushedTwiceState = TestRouter.getStateForAction(
NavigationActions.navigate({ routeName: 'bar', immediate: true }),
NavigationActions.navigate({ routeName: 'bar' }),
pushedState
);
expect(pushedTwiceState.index).toEqual(2);
@@ -557,7 +540,7 @@ describe('StackRouter', () => {
});
const initState = TestRouter.getStateForAction(NavigationActions.init());
const pushedState = TestRouter.getStateForAction(
NavigationActions.push({ routeName: 'bar', immediate: true }),
NavigationActions.push({ routeName: 'bar' }),
initState
);
expect(pushedState.index).toEqual(1);