File tree 1 file changed +22
-1
lines changed
1 file changed +22
-1
lines changed Original file line number Diff line number Diff line change 1
1
//@flow
2
2
import AppNavigator from './navigator'
3
+ import _ from 'lodash'
4
+
3
5
import type { Action } from '../types.js'
4
6
5
7
// @TODO can we type this better or get type from react-navigation [zack]
@@ -8,10 +10,29 @@ export type State = {
8
10
index : number ,
9
11
} ;
10
12
11
- export default ( state , action ) => {
13
+ function isDuplicateRoute ( originalRoute , newRoute ) {
14
+ while ( originalRoute && originalRoute . index >= 0 ) {
15
+ originalRoute = originalRoute . routes [ originalRoute . index ]
16
+ }
17
+
18
+ while ( newRoute && newRoute . index >= 0 ) {
19
+ newRoute = newRoute . routes [ newRoute . index ]
20
+ }
21
+
22
+ if ( _ . isEqual ( originalRoute , newRoute ) ) {
23
+ console . log ( '## Duplicate navigation stack push, skipping' )
24
+ return true
25
+ } else
26
+ return false
27
+ }
28
+
29
+ export default ( state : ?State , action : Action ) => {
12
30
const appNavigatorState = AppNavigator . router . getStateForAction (
13
31
action ,
14
32
state
15
33
)
34
+
35
+ if ( isDuplicateRoute ( state , appNavigatorState ) ) return state
36
+
16
37
return appNavigatorState || state
17
38
}
You can’t perform that action at this time.
0 commit comments