diff --git a/src/core/services/utils/dom.ts b/src/core/services/utils/dom.ts index d097ee912..b3052137e 100644 --- a/src/core/services/utils/dom.ts +++ b/src/core/services/utils/dom.ts @@ -1703,6 +1703,9 @@ export class CoreDomUtilsProvider { let navSubscription: Subscription | undefined; + // Get the promise before presenting to get result if modal is suddenly hidden. + const resultPromise = waitForDismissCompleted ? modal.onDidDismiss() : modal.onWillDismiss(); + if (!this.displayedModals[modalId]) { // Store the modal and remove it when dismissed. this.displayedModals[modalId] = modal; @@ -1719,7 +1722,8 @@ export class CoreDomUtilsProvider { await modal.present(); } - const result = waitForDismissCompleted ? await modal.onDidDismiss() : await modal.onWillDismiss(); + const result = await resultPromise; + navSubscription?.unsubscribe(); delete this.displayedModals[modalId];