From aef6338b304a4c0be7ddf84fe63b57d31cb34d41 Mon Sep 17 00:00:00 2001 From: Martin Guillon Date: Thu, 10 Feb 2022 12:15:46 +0100 Subject: [PATCH] fix(android): if a page transition is cancelled , the end event wont be called. We need to handle it and call `transitionOrAnimationCompleted` --- .../core/ui/frame/fragment.transitions.android.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/core/ui/frame/fragment.transitions.android.ts b/packages/core/ui/frame/fragment.transitions.android.ts index 4c92a52fe..f858b332a 100644 --- a/packages/core/ui/frame/fragment.transitions.android.ts +++ b/packages/core/ui/frame/fragment.transitions.android.ts @@ -234,9 +234,13 @@ function getAnimationListener(): android.animation.Animator.AnimatorListener { } onAnimationCancel(animator: ExpandedAnimator): void { + // if cancel onAnimationEnd will not be called + const entry = animator.entry; + const backEntry = animator.backEntry; if (Trace.isEnabled()) { - Trace.write(`CANCEL ${animator.transitionType} for ${animator.entry.fragmentTag}`, Trace.categories.Transition); + Trace.write(`CANCEL ${animator.transitionType} for ${animator.entry.fragmentTag} backEntry:${backEntry ? backEntry.fragmentTag : 'none'}`, Trace.categories.Transition); } + transitionOrAnimationCompleted(entry, backEntry); } } @@ -358,9 +362,13 @@ function getTransitionListener(entry: ExpandedEntry, transition: androidx.transi } onTransitionCancel(transition: androidx.transition.Transition): void { + // if cancel onTransitionEnd will not be called + const entry = this.entry; + const backEntry = this.backEntry; if (Trace.isEnabled()) { - Trace.write(`CANCEL ${toShortString(transition)} transition for ${this.entry.fragmentTag}`, Trace.categories.Transition); + Trace.write(`CANCEL ${toShortString(transition)} transition for ${this.entry.fragmentTag} backEntry:${backEntry ? backEntry.fragmentTag : 'none'}`, Trace.categories.Transition); } + transitionOrAnimationCompleted(entry, backEntry); } }