fix(android-transition): exit transition not executed after app suspend resume (#7402)

This commit is contained in:
Alexander Djenkov
2019-06-26 01:06:15 +03:00
committed by Manol Donev
parent 6f439cb819
commit f08b491750

View File

@ -1,6 +1,7 @@
/// <reference path="transition-definitions.android.d.ts"/> /// <reference path="transition-definitions.android.d.ts"/>
// Definitions. // Definitions.
import { NavigationType } from "./frame-common";
import { NavigationTransition, BackstackEntry } from "../frame"; import { NavigationTransition, BackstackEntry } from "../frame";
import { AnimationType } from "./fragment.transitions.types"; import { AnimationType } from "./fragment.transitions.types";
@ -733,12 +734,13 @@ function transitionOrAnimationCompleted(entry: ExpandedEntry): void {
completedEntries.delete(frameId); completedEntries.delete(frameId);
waitingQueue.delete(frameId); waitingQueue.delete(frameId);
const navigationContext = frame._executingContext || { navigationType: NavigationType.back };
let current = frame.isCurrent(entry) ? previousCompletedAnimationEntry : entry; let current = frame.isCurrent(entry) ? previousCompletedAnimationEntry : entry;
current = current || entry; current = current || entry;
// Will be null if Frame is shown modally... // Will be null if Frame is shown modally...
// transitionOrAnimationCompleted fires again (probably bug in android). // transitionOrAnimationCompleted fires again (probably bug in android).
if (current && frame._executingContext) { if (current) {
setTimeout(() => frame.setCurrent(current, frame._executingContext.navigationType)); setTimeout(() => frame.setCurrent(current, navigationContext.navigationType));
} }
} else { } else {
completedEntries.set(frameId, entry); completedEntries.set(frameId, entry);