@@ -28,6 +28,7 @@ export type OpaqueTransition = PublicTransition;
28
28
export const STATE_SYMBOL = `__STATE__-2619860001345920-3322w3` ;
29
29
export const PARAMS_SYMBOL = `__PARAMS__-261986232992830203-23323` ;
30
30
export const QUERY_PARAMS_SYMBOL = `__QPS__-2619863929824844-32323` ;
31
+ export const REDIRECT_DESTINATION_SYMBOL = `__RDS__-2619863929824844-32323` ;
31
32
32
33
/**
33
34
A Transition is a thenable (a promise-like object) that represents
@@ -71,6 +72,7 @@ export default class Transition<R extends Route> implements Partial<Promise<R>>
71
72
isCausedByAbortingReplaceTransition = false ;
72
73
_visibleQueryParams : Dict < unknown > = { } ;
73
74
isIntermediate = false ;
75
+ [ REDIRECT_DESTINATION_SYMBOL ] ?: Transition < R > ;
74
76
75
77
/**
76
78
In non-production builds, this function will return the stack that this Transition was
@@ -309,6 +311,7 @@ export default class Transition<R extends Route> implements Partial<Promise<R>>
309
311
}
310
312
311
313
redirect ( newTransition : Transition < R > ) {
314
+ this [ REDIRECT_DESTINATION_SYMBOL ] = newTransition ;
312
315
this . rollback ( ) ;
313
316
this . router . routeWillChange ( newTransition ) ;
314
317
}
@@ -419,10 +422,9 @@ export default class Transition<R extends Route> implements Partial<Promise<R>>
419
422
@public
420
423
*/
421
424
followRedirects ( ) : Promise < R > {
422
- let router = this . router ;
423
- return this . promise ! . catch ( function ( reason ) {
424
- if ( router . activeTransition ) {
425
- return router . activeTransition . followRedirects ( ) ;
425
+ return this . promise ! . catch ( ( reason ) => {
426
+ if ( this [ REDIRECT_DESTINATION_SYMBOL ] ) {
427
+ return this [ REDIRECT_DESTINATION_SYMBOL ] ! . followRedirects ( ) ;
426
428
}
427
429
return Promise . reject ( reason ) ;
428
430
} ) ;
0 commit comments