@react-navigation/native 7.3.5 → 7.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/module/useLinking.js
CHANGED
|
@@ -5,6 +5,12 @@ import isEqual from 'fast-deep-equal';
|
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { createMemoryHistory } from "./createMemoryHistory.js";
|
|
7
7
|
import { ServerContext } from "./ServerContext.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* History delta already applied by the browser when handling `popstate`
|
|
11
|
+
* The value 'replace' means the delta is unknown, so we can only replace
|
|
12
|
+
*/
|
|
13
|
+
|
|
8
14
|
const getRoutesUntilIndex = state => state.routes.slice(0, state.index + 1);
|
|
9
15
|
|
|
10
16
|
/**
|
|
@@ -24,6 +30,9 @@ const findMatchingState = (a, b) => {
|
|
|
24
30
|
const bHistoryLength = getHistoryLength(b);
|
|
25
31
|
const aRoute = a.routes[a.index];
|
|
26
32
|
const bRoute = b.routes[b.index];
|
|
33
|
+
if (aRoute == null || bRoute == null) {
|
|
34
|
+
return [a, b];
|
|
35
|
+
}
|
|
27
36
|
const aChildState = aRoute.state;
|
|
28
37
|
const bChildState = bRoute.state;
|
|
29
38
|
|
|
@@ -48,7 +57,10 @@ const isPoppingLastEntry = (current, record) => {
|
|
|
48
57
|
const currentRoutes = getRoutesUntilIndex(current);
|
|
49
58
|
const recordRoutes = getRoutesUntilIndex(record);
|
|
50
59
|
if (currentRoutes.length === recordRoutes.length + 1) {
|
|
51
|
-
return recordRoutes.every((route, i) =>
|
|
60
|
+
return recordRoutes.every((route, i) => {
|
|
61
|
+
const currentRoute = currentRoutes[i];
|
|
62
|
+
return currentRoute != null && route.key === currentRoute.key;
|
|
63
|
+
});
|
|
52
64
|
}
|
|
53
65
|
return false;
|
|
54
66
|
};
|
|
@@ -60,7 +72,9 @@ export const series = cb => {
|
|
|
60
72
|
let queue = Promise.resolve();
|
|
61
73
|
const callback = () => {
|
|
62
74
|
// eslint-disable-next-line promise/no-callback-in-promise
|
|
63
|
-
queue = queue.then(cb)
|
|
75
|
+
queue = queue.then(cb).catch(e => {
|
|
76
|
+
console.error(e);
|
|
77
|
+
});
|
|
64
78
|
};
|
|
65
79
|
return callback;
|
|
66
80
|
};
|
|
@@ -146,7 +160,7 @@ export function useLinking(ref, {
|
|
|
146
160
|
}, []);
|
|
147
161
|
const previousIndexRef = React.useRef(undefined);
|
|
148
162
|
const previousStateRef = React.useRef(undefined);
|
|
149
|
-
const
|
|
163
|
+
const pendingPopStateDeltaRef = React.useRef(undefined);
|
|
150
164
|
React.useEffect(() => {
|
|
151
165
|
previousIndexRef.current = history.index;
|
|
152
166
|
return history.listen(() => {
|
|
@@ -161,20 +175,20 @@ export function useLinking(ref, {
|
|
|
161
175
|
const index = history.index;
|
|
162
176
|
const previousIndex = previousIndexRef.current ?? 0;
|
|
163
177
|
previousIndexRef.current = index;
|
|
164
|
-
pendingPopStatePathRef.current = path;
|
|
165
178
|
const rollbackHistory = () => {
|
|
166
179
|
const delta = previousIndex - index;
|
|
167
180
|
if (delta === 0) {
|
|
168
181
|
return;
|
|
169
182
|
}
|
|
170
|
-
|
|
171
|
-
|
|
183
|
+
history.go(delta)
|
|
172
184
|
// eslint-disable-next-line promise/always-return
|
|
173
|
-
|
|
185
|
+
?.then(() => {
|
|
174
186
|
previousIndexRef.current = history.index;
|
|
187
|
+
}).catch(() => {
|
|
188
|
+
// The navigation was interrupted
|
|
175
189
|
});
|
|
176
190
|
};
|
|
177
|
-
const rollbackHistoryIfPrevented = callback => {
|
|
191
|
+
const rollbackHistoryIfPrevented = (callback, pendingDelta) => {
|
|
178
192
|
let removePrevented = false;
|
|
179
193
|
let actionChangedState = false;
|
|
180
194
|
const unsubscribeEvent = navigation.addListener('__unsafe_event__', e => {
|
|
@@ -197,15 +211,19 @@ export function useLinking(ref, {
|
|
|
197
211
|
unsubscribeEvent();
|
|
198
212
|
unsubscribeAction();
|
|
199
213
|
}
|
|
200
|
-
if (
|
|
214
|
+
if (actionChangedState) {
|
|
215
|
+
// The change may be committed later, e.g. with transitions
|
|
216
|
+
// Remember the delta so it can be subtracted when syncing the commit
|
|
217
|
+
pendingPopStateDeltaRef.current = pendingDelta;
|
|
218
|
+
} else if (removePrevented) {
|
|
201
219
|
rollbackHistory();
|
|
202
220
|
}
|
|
203
221
|
};
|
|
204
|
-
const dispatch = action => {
|
|
205
|
-
rollbackHistoryIfPrevented(() => navigation.dispatch(action));
|
|
222
|
+
const dispatch = (action, pendingDelta) => {
|
|
223
|
+
rollbackHistoryIfPrevented(() => navigation.dispatch(action), pendingDelta);
|
|
206
224
|
};
|
|
207
|
-
const resetRoot = state => {
|
|
208
|
-
rollbackHistoryIfPrevented(() => navigation.resetRoot(state));
|
|
225
|
+
const resetRoot = (state, pendingDelta) => {
|
|
226
|
+
rollbackHistoryIfPrevented(() => navigation.resetRoot(state), pendingDelta);
|
|
209
227
|
};
|
|
210
228
|
|
|
211
229
|
// When browser back/forward is clicked, we first need to check if state object for this index exists
|
|
@@ -216,12 +234,17 @@ export function useLinking(ref, {
|
|
|
216
234
|
const currentState = navigation.getRootState();
|
|
217
235
|
const [currentFocused, recordFocused] = findMatchingState(currentState, record.state);
|
|
218
236
|
if (previousIndex - index === 1 && currentFocused && recordFocused && isPoppingLastEntry(currentFocused, recordFocused)) {
|
|
237
|
+
const pending = pendingPopStateDeltaRef.current;
|
|
238
|
+
|
|
219
239
|
// If we detect that the state change is popping the last entry
|
|
220
240
|
// Dispatch a back action instead of resetting to the state
|
|
221
241
|
// This makes sure changes to history state since the entry was added don't get lost
|
|
222
|
-
dispatch(CommonActions.goBack()
|
|
242
|
+
dispatch(CommonActions.goBack(),
|
|
243
|
+
// Stack on any delta from a previous `popstate` that hasn't committed yet
|
|
244
|
+
pending === 'replace' ? 'replace' : (pending ?? 0) - 1);
|
|
223
245
|
} else {
|
|
224
|
-
|
|
246
|
+
// The browser already moved from the current state to the record's state
|
|
247
|
+
resetRoot(record.state, currentFocused && recordFocused ? getHistoryLength(recordFocused) - getHistoryLength(currentFocused) : 'replace');
|
|
225
248
|
}
|
|
226
249
|
return;
|
|
227
250
|
}
|
|
@@ -245,21 +268,21 @@ export function useLinking(ref, {
|
|
|
245
268
|
const action = getActionFromStateRef.current(state, configRef.current);
|
|
246
269
|
if (action !== undefined) {
|
|
247
270
|
try {
|
|
248
|
-
dispatch(action);
|
|
271
|
+
dispatch(action, 'replace');
|
|
249
272
|
} catch (e) {
|
|
250
273
|
// Ignore any errors from deep linking.
|
|
251
274
|
// This could happen in case of malformed links, navigation object not being initialized etc.
|
|
252
275
|
console.warn(`An error occurred when trying to handle the link '${path}': ${typeof e === 'object' && e != null && 'message' in e ? e.message : e}`);
|
|
253
276
|
}
|
|
254
277
|
} else {
|
|
255
|
-
resetRoot(state);
|
|
278
|
+
resetRoot(state, 'replace');
|
|
256
279
|
}
|
|
257
280
|
} else {
|
|
258
|
-
resetRoot(state);
|
|
281
|
+
resetRoot(state, 'replace');
|
|
259
282
|
}
|
|
260
283
|
} else {
|
|
261
284
|
// if current path didn't return any state, we should revert to initial state
|
|
262
|
-
resetRoot(state);
|
|
285
|
+
resetRoot(state, 'replace');
|
|
263
286
|
}
|
|
264
287
|
});
|
|
265
288
|
}, [enabled, history, ref, validateRoutesNotExistInRootState]);
|
|
@@ -327,11 +350,18 @@ export function useLinking(ref, {
|
|
|
327
350
|
if (!state) {
|
|
328
351
|
return;
|
|
329
352
|
}
|
|
330
|
-
|
|
353
|
+
|
|
354
|
+
// Skip if the state hasn't changed since we last synced it
|
|
355
|
+
// This avoids redundant work when the committed `state` event fires
|
|
356
|
+
// after we already synced from `__unsafe_action__`
|
|
357
|
+
if (previousState === state) {
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
331
360
|
const route = findFocusedRoute(state);
|
|
332
361
|
const path = getPathForRoute(route, state);
|
|
362
|
+
const pendingPopStateDelta = pendingPopStateDeltaRef.current;
|
|
333
363
|
previousStateRef.current = state;
|
|
334
|
-
|
|
364
|
+
pendingPopStateDeltaRef.current = undefined;
|
|
335
365
|
|
|
336
366
|
// To detect the kind of state change, we need to:
|
|
337
367
|
// - Find the common focused navigation state in previous and current state
|
|
@@ -339,10 +369,11 @@ export function useLinking(ref, {
|
|
|
339
369
|
// - If no common focused navigation state found, it's a replace
|
|
340
370
|
const [previousFocusedState, focusedState] = findMatchingState(previousState, state);
|
|
341
371
|
if (previousFocusedState && focusedState &&
|
|
342
|
-
//
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
372
|
+
// If the delta from `popstate` is unknown, we can only replace
|
|
373
|
+
pendingPopStateDelta !== 'replace') {
|
|
374
|
+
const historyDelta = getHistoryLength(focusedState) - getHistoryLength(previousFocusedState) - (
|
|
375
|
+
// Subtract the delta already applied by the browser to sync only the remaining changes
|
|
376
|
+
pendingPopStateDelta ?? 0);
|
|
346
377
|
if (historyDelta > 0) {
|
|
347
378
|
// If history length is increased, we should pushState
|
|
348
379
|
// Note that path might not actually change here, for example, drawer open should pushState
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CommonActions","findFocusedRoute","getActionFromState","getActionFromStateDefault","getPathFromState","getPathFromStateDefault","getStateFromPath","getStateFromPathDefault","useNavigationIndependentTree","isEqual","React","createMemoryHistory","ServerContext","getRoutesUntilIndex","state","routes","slice","index","getHistoryLength","history","length","findMatchingState","a","b","undefined","key","aHistoryLength","bHistoryLength","aRoute","bRoute","aChildState","bChildState","isPoppingLastEntry","current","record","currentRoutes","recordRoutes","every","route","i","series","cb","queue","Promise","resolve","callback","then","linkingHandlers","useLinking","ref","enabled","config","independent","useEffect","process","env","NODE_ENV","console","error","join","trim","handler","Symbol","push","indexOf","splice","useState","enabledRef","useRef","configRef","getStateFromPathRef","getPathFromStateRef","getActionFromStateRef","validateRoutesNotExistInRootState","useCallback","navigation","rootState","getRootState","some","r","routeNames","includes","name","server","useContext","getInitialState","value","location","window","path","pathname","search","e","thenable","onfulfilled","catch","previousIndexRef","previousStateRef","pendingPopStatePathRef","listen","previousIndex","rollbackHistory","delta","go","rollbackHistoryIfPrevented","removePrevented","actionChangedState","unsubscribeEvent","addListener","data","type","defaultPrevented","unsubscribeAction","noop","dispatch","action","resetRoot","get","currentState","currentFocused","recordFocused","goBack","warn","message","getPathForRoute","stateForPath","focusedRoute","params","previousRoute","hash","replace","onStateChange","previousState","pendingPath","previousFocusedState","focusedState","historyDelta","nextIndex","backIndex","currentIndex"],"sourceRoot":"../../src","sources":["useLinking.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["CommonActions","findFocusedRoute","getActionFromState","getActionFromStateDefault","getPathFromState","getPathFromStateDefault","getStateFromPath","getStateFromPathDefault","useNavigationIndependentTree","isEqual","React","createMemoryHistory","ServerContext","getRoutesUntilIndex","state","routes","slice","index","getHistoryLength","history","length","findMatchingState","a","b","undefined","key","aHistoryLength","bHistoryLength","aRoute","bRoute","aChildState","bChildState","isPoppingLastEntry","current","record","currentRoutes","recordRoutes","every","route","i","currentRoute","series","cb","queue","Promise","resolve","callback","then","catch","e","console","error","linkingHandlers","useLinking","ref","enabled","config","independent","useEffect","process","env","NODE_ENV","join","trim","handler","Symbol","push","indexOf","splice","useState","enabledRef","useRef","configRef","getStateFromPathRef","getPathFromStateRef","getActionFromStateRef","validateRoutesNotExistInRootState","useCallback","navigation","rootState","getRootState","some","r","routeNames","includes","name","server","useContext","getInitialState","value","location","window","path","pathname","search","thenable","onfulfilled","previousIndexRef","previousStateRef","pendingPopStateDeltaRef","listen","previousIndex","rollbackHistory","delta","go","rollbackHistoryIfPrevented","pendingDelta","removePrevented","actionChangedState","unsubscribeEvent","addListener","data","type","defaultPrevented","unsubscribeAction","noop","dispatch","action","resetRoot","get","currentState","currentFocused","recordFocused","pending","goBack","warn","message","getPathForRoute","stateForPath","focusedRoute","params","previousRoute","hash","replace","onStateChange","previousState","pendingPopStateDelta","previousFocusedState","focusedState","historyDelta","nextIndex","backIndex","currentIndex"],"sourceRoot":"../../src","sources":["useLinking.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLinking.d.ts","sourceRoot":"","sources":["../../../src/useLinking.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,gBAAgB,IAAI,uBAAuB,EAC3C,KAAK,sBAAsB,EAE3B,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAE9C,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useLinking.d.ts","sourceRoot":"","sources":["../../../src/useLinking.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,gBAAgB,IAAI,uBAAuB,EAC3C,KAAK,sBAAsB,EAE3B,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAE9C,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAqF9D;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,eAS7C,CAAC;AAIF,KAAK,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAE7C,wBAAgB,UAAU,CACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,MAAM,EACN,gBAA0C,EAC1C,gBAA0C,EAC1C,kBAA8C,GAC/C,EAAE,OAAO;2BAsGW,WAAW,CAAC,WAAW,GAAG,SAAS,CAAC;EAsY1D"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/native",
|
|
3
3
|
"description": "React Native integration for React Navigation",
|
|
4
|
-
"version": "7.3.
|
|
4
|
+
"version": "7.3.6",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
7
7
|
"react-navigation",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"clean": "del lib"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@react-navigation/core": "^7.21.
|
|
45
|
+
"@react-navigation/core": "^7.21.4",
|
|
46
46
|
"escape-string-regexp": "^4.0.0",
|
|
47
47
|
"fast-deep-equal": "^3.1.3",
|
|
48
48
|
"nanoid": "^3.3.11",
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
]
|
|
85
85
|
]
|
|
86
86
|
},
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "207ce5a98e84bacb3a254ca8ab46856704f73542"
|
|
88
88
|
}
|
package/src/useLinking.tsx
CHANGED
|
@@ -18,6 +18,12 @@ import type { LinkingOptions } from './types';
|
|
|
18
18
|
|
|
19
19
|
type ResultState = ReturnType<typeof getStateFromPathDefault>;
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* History delta already applied by the browser when handling `popstate`
|
|
23
|
+
* The value 'replace' means the delta is unknown, so we can only replace
|
|
24
|
+
*/
|
|
25
|
+
type PopStateDelta = number | 'replace';
|
|
26
|
+
|
|
21
27
|
const getRoutesUntilIndex = (state: NavigationState) =>
|
|
22
28
|
state.routes.slice(0, state.index + 1);
|
|
23
29
|
|
|
@@ -45,6 +51,10 @@ const findMatchingState = <T extends NavigationState>(
|
|
|
45
51
|
const aRoute = a.routes[a.index];
|
|
46
52
|
const bRoute = b.routes[b.index];
|
|
47
53
|
|
|
54
|
+
if (aRoute == null || bRoute == null) {
|
|
55
|
+
return [a, b];
|
|
56
|
+
}
|
|
57
|
+
|
|
48
58
|
const aChildState = aRoute.state as T | undefined;
|
|
49
59
|
const bChildState = bRoute.state as T | undefined;
|
|
50
60
|
|
|
@@ -81,7 +91,11 @@ const isPoppingLastEntry = (
|
|
|
81
91
|
const recordRoutes = getRoutesUntilIndex(record);
|
|
82
92
|
|
|
83
93
|
if (currentRoutes.length === recordRoutes.length + 1) {
|
|
84
|
-
return recordRoutes.every((route, i) =>
|
|
94
|
+
return recordRoutes.every((route, i) => {
|
|
95
|
+
const currentRoute = currentRoutes[i];
|
|
96
|
+
|
|
97
|
+
return currentRoute != null && route.key === currentRoute.key;
|
|
98
|
+
});
|
|
85
99
|
}
|
|
86
100
|
|
|
87
101
|
return false;
|
|
@@ -94,7 +108,9 @@ export const series = (cb: () => Promise<void>) => {
|
|
|
94
108
|
let queue = Promise.resolve();
|
|
95
109
|
const callback = () => {
|
|
96
110
|
// eslint-disable-next-line promise/no-callback-in-promise
|
|
97
|
-
queue = queue.then(cb)
|
|
111
|
+
queue = queue.then(cb).catch((e) => {
|
|
112
|
+
console.error(e);
|
|
113
|
+
});
|
|
98
114
|
};
|
|
99
115
|
return callback;
|
|
100
116
|
};
|
|
@@ -219,7 +235,9 @@ export function useLinking(
|
|
|
219
235
|
|
|
220
236
|
const previousIndexRef = React.useRef<number | undefined>(undefined);
|
|
221
237
|
const previousStateRef = React.useRef<NavigationState | undefined>(undefined);
|
|
222
|
-
const
|
|
238
|
+
const pendingPopStateDeltaRef = React.useRef<PopStateDelta | undefined>(
|
|
239
|
+
undefined
|
|
240
|
+
);
|
|
223
241
|
|
|
224
242
|
React.useEffect(() => {
|
|
225
243
|
previousIndexRef.current = history.index;
|
|
@@ -239,7 +257,6 @@ export function useLinking(
|
|
|
239
257
|
const previousIndex = previousIndexRef.current ?? 0;
|
|
240
258
|
|
|
241
259
|
previousIndexRef.current = index;
|
|
242
|
-
pendingPopStatePathRef.current = path;
|
|
243
260
|
|
|
244
261
|
const rollbackHistory = () => {
|
|
245
262
|
const delta = previousIndex - index;
|
|
@@ -248,15 +265,21 @@ export function useLinking(
|
|
|
248
265
|
return;
|
|
249
266
|
}
|
|
250
267
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
268
|
+
history
|
|
269
|
+
.go(delta)
|
|
270
|
+
// eslint-disable-next-line promise/always-return
|
|
271
|
+
?.then(() => {
|
|
272
|
+
previousIndexRef.current = history.index;
|
|
273
|
+
})
|
|
274
|
+
.catch(() => {
|
|
275
|
+
// The navigation was interrupted
|
|
276
|
+
});
|
|
257
277
|
};
|
|
258
278
|
|
|
259
|
-
const rollbackHistoryIfPrevented = (
|
|
279
|
+
const rollbackHistoryIfPrevented = (
|
|
280
|
+
callback: () => void,
|
|
281
|
+
pendingDelta: PopStateDelta
|
|
282
|
+
) => {
|
|
260
283
|
let removePrevented = false;
|
|
261
284
|
let actionChangedState = false;
|
|
262
285
|
|
|
@@ -288,17 +311,33 @@ export function useLinking(
|
|
|
288
311
|
unsubscribeAction();
|
|
289
312
|
}
|
|
290
313
|
|
|
291
|
-
if (
|
|
314
|
+
if (actionChangedState) {
|
|
315
|
+
// The change may be committed later, e.g. with transitions
|
|
316
|
+
// Remember the delta so it can be subtracted when syncing the commit
|
|
317
|
+
pendingPopStateDeltaRef.current = pendingDelta;
|
|
318
|
+
} else if (removePrevented) {
|
|
292
319
|
rollbackHistory();
|
|
293
320
|
}
|
|
294
321
|
};
|
|
295
322
|
|
|
296
|
-
const dispatch = (
|
|
297
|
-
|
|
323
|
+
const dispatch = (
|
|
324
|
+
action: Parameters<typeof navigation.dispatch>[0],
|
|
325
|
+
pendingDelta: PopStateDelta
|
|
326
|
+
) => {
|
|
327
|
+
rollbackHistoryIfPrevented(
|
|
328
|
+
() => navigation.dispatch(action),
|
|
329
|
+
pendingDelta
|
|
330
|
+
);
|
|
298
331
|
};
|
|
299
332
|
|
|
300
|
-
const resetRoot = (
|
|
301
|
-
|
|
333
|
+
const resetRoot = (
|
|
334
|
+
state: Parameters<typeof navigation.resetRoot>[0],
|
|
335
|
+
pendingDelta: PopStateDelta
|
|
336
|
+
) => {
|
|
337
|
+
rollbackHistoryIfPrevented(
|
|
338
|
+
() => navigation.resetRoot(state),
|
|
339
|
+
pendingDelta
|
|
340
|
+
);
|
|
302
341
|
};
|
|
303
342
|
|
|
304
343
|
// When browser back/forward is clicked, we first need to check if state object for this index exists
|
|
@@ -320,12 +359,25 @@ export function useLinking(
|
|
|
320
359
|
recordFocused &&
|
|
321
360
|
isPoppingLastEntry(currentFocused, recordFocused)
|
|
322
361
|
) {
|
|
362
|
+
const pending = pendingPopStateDeltaRef.current;
|
|
363
|
+
|
|
323
364
|
// If we detect that the state change is popping the last entry
|
|
324
365
|
// Dispatch a back action instead of resetting to the state
|
|
325
366
|
// This makes sure changes to history state since the entry was added don't get lost
|
|
326
|
-
dispatch(
|
|
367
|
+
dispatch(
|
|
368
|
+
CommonActions.goBack(),
|
|
369
|
+
// Stack on any delta from a previous `popstate` that hasn't committed yet
|
|
370
|
+
pending === 'replace' ? 'replace' : (pending ?? 0) - 1
|
|
371
|
+
);
|
|
327
372
|
} else {
|
|
328
|
-
|
|
373
|
+
// The browser already moved from the current state to the record's state
|
|
374
|
+
resetRoot(
|
|
375
|
+
record.state,
|
|
376
|
+
currentFocused && recordFocused
|
|
377
|
+
? getHistoryLength(recordFocused) -
|
|
378
|
+
getHistoryLength(currentFocused)
|
|
379
|
+
: 'replace'
|
|
380
|
+
);
|
|
329
381
|
}
|
|
330
382
|
|
|
331
383
|
return;
|
|
@@ -358,7 +410,7 @@ export function useLinking(
|
|
|
358
410
|
|
|
359
411
|
if (action !== undefined) {
|
|
360
412
|
try {
|
|
361
|
-
dispatch(action);
|
|
413
|
+
dispatch(action, 'replace');
|
|
362
414
|
} catch (e) {
|
|
363
415
|
// Ignore any errors from deep linking.
|
|
364
416
|
// This could happen in case of malformed links, navigation object not being initialized etc.
|
|
@@ -371,14 +423,14 @@ export function useLinking(
|
|
|
371
423
|
);
|
|
372
424
|
}
|
|
373
425
|
} else {
|
|
374
|
-
resetRoot(state);
|
|
426
|
+
resetRoot(state, 'replace');
|
|
375
427
|
}
|
|
376
428
|
} else {
|
|
377
|
-
resetRoot(state);
|
|
429
|
+
resetRoot(state, 'replace');
|
|
378
430
|
}
|
|
379
431
|
} else {
|
|
380
432
|
// if current path didn't return any state, we should revert to initial state
|
|
381
|
-
resetRoot(state);
|
|
433
|
+
resetRoot(state, 'replace');
|
|
382
434
|
}
|
|
383
435
|
});
|
|
384
436
|
}, [enabled, history, ref, validateRoutesNotExistInRootState]);
|
|
@@ -478,12 +530,20 @@ export function useLinking(
|
|
|
478
530
|
return;
|
|
479
531
|
}
|
|
480
532
|
|
|
481
|
-
|
|
533
|
+
// Skip if the state hasn't changed since we last synced it
|
|
534
|
+
// This avoids redundant work when the committed `state` event fires
|
|
535
|
+
// after we already synced from `__unsafe_action__`
|
|
536
|
+
if (previousState === state) {
|
|
537
|
+
return;
|
|
538
|
+
}
|
|
539
|
+
|
|
482
540
|
const route = findFocusedRoute(state);
|
|
483
541
|
const path = getPathForRoute(route, state);
|
|
484
542
|
|
|
543
|
+
const pendingPopStateDelta = pendingPopStateDeltaRef.current;
|
|
544
|
+
|
|
485
545
|
previousStateRef.current = state;
|
|
486
|
-
|
|
546
|
+
pendingPopStateDeltaRef.current = undefined;
|
|
487
547
|
|
|
488
548
|
// To detect the kind of state change, we need to:
|
|
489
549
|
// - Find the common focused navigation state in previous and current state
|
|
@@ -497,13 +557,14 @@ export function useLinking(
|
|
|
497
557
|
if (
|
|
498
558
|
previousFocusedState &&
|
|
499
559
|
focusedState &&
|
|
500
|
-
//
|
|
501
|
-
|
|
502
|
-
path !== pendingPath
|
|
560
|
+
// If the delta from `popstate` is unknown, we can only replace
|
|
561
|
+
pendingPopStateDelta !== 'replace'
|
|
503
562
|
) {
|
|
504
563
|
const historyDelta =
|
|
505
564
|
getHistoryLength(focusedState) -
|
|
506
|
-
getHistoryLength(previousFocusedState)
|
|
565
|
+
getHistoryLength(previousFocusedState) -
|
|
566
|
+
// Subtract the delta already applied by the browser to sync only the remaining changes
|
|
567
|
+
(pendingPopStateDelta ?? 0);
|
|
507
568
|
|
|
508
569
|
if (historyDelta > 0) {
|
|
509
570
|
// If history length is increased, we should pushState
|