Skip to content

Commit

Permalink
fix(nav): transitioning state is a boolean not a timer
Browse files Browse the repository at this point in the history
long async promises in canLeave / canEnter can lead to a false negative of isTransitioning()
It is key for the internal consistency of NavController to always know the correct state
  • Loading branch information
manucorporat committed Nov 4, 2016
1 parent beab06f commit 63d495a
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions src/navigation/nav-controller-base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export class NavControllerBase extends Ion implements NavController {
_sbThreshold: number;
_sbTrns: Transition;
_trnsId: number = null;
_trnsTm: number = 0;
_trnsTm: boolean = false;
_viewport: ViewContainerRef;
_views: ViewController[] = [];

Expand Down Expand Up @@ -597,7 +597,7 @@ export class NavControllerBase extends Ion implements NavController {
const duration = transition.getDuration();

// set that this nav is actively transitioning
this.setTransitioning(true, duration);
this.setTransitioning(true);

if (transition.isRoot()) {
// this is the top most, or only active transition, so disable the app
Expand Down Expand Up @@ -883,7 +883,7 @@ export class NavControllerBase extends Ion implements NavController {
if (this._sbTrns && this._sbGesture) {
// continue to disable the app while actively dragging
this._app.setEnabled(false, ACTIVE_TRANSITION_DEFAULT);
this.setTransitioning(true, ACTIVE_TRANSITION_DEFAULT);
this.setTransitioning(true);

// set the transition animation's progress
this._sbTrns.progressStep(stepValue);
Expand Down Expand Up @@ -933,15 +933,11 @@ export class NavControllerBase extends Ion implements NavController {
}

isTransitioning(): boolean {
if (this._trnsTm === 0) {
return false;
}
// using a timestamp instead of boolean incase something goes wrong
return (this._trnsTm > Date.now());
return this._trnsTm;
}

setTransitioning(isTransitioning: boolean, durationPadding: number = ACTIVE_TRANSITION_DEFAULT) {
this._trnsTm = (isTransitioning ? (Date.now() + durationPadding + ACTIVE_TRANSITION_OFFSET) : 0);
setTransitioning(isTransitioning: boolean) {
this._trnsTm = isTransitioning;
}

getActive(): ViewController {
Expand Down

0 comments on commit 63d495a

Please sign in to comment.