@@ -541,8 +541,6 @@ function showUIAlertController(alertController: MDCAlertController, options: Dia
541
541
}
542
542
if ( options . titleColor ) {
543
543
alertController . titleColor = options . titleColor . ios ;
544
- // } else if (lblColor) {
545
- // alertController.titleColor = lblColor.ios;
546
544
}
547
545
if ( options . titleIconTintColor ) {
548
546
alertController . titleIconTintColor = options . titleIconTintColor . ios ;
@@ -584,13 +582,15 @@ function showUIAlertController(alertController: MDCAlertController, options: Dia
584
582
if ( currentView ) {
585
583
currentView = currentView . modal || currentView ;
586
584
let viewController = currentView . viewController ;
587
- if ( ! viewController . presentedViewController && rootView . viewController . presentedViewController ) {
585
+ if ( ! viewController ) {
586
+ throw new Error ( "no_controller_to_show_dialog" ) ;
587
+ }
588
+ if ( ! viewController . presentedViewController && rootView . viewController . presentedViewController && ! rootView . viewController . presentedViewController . beingDismissed ) {
588
589
viewController = rootView . viewController . presentedViewController ;
589
590
}
590
591
591
- while ( viewController . presentedViewController ) {
592
- while (
593
- viewController . presentedViewController instanceof UIAlertController ||
592
+ while ( viewController . presentedViewController && ! viewController . presentedViewController . beingDismissed ) {
593
+ while ( viewController . presentedViewController instanceof UIAlertController ||
594
594
( viewController . presentedViewController [ 'isAlertController' ] && viewController . presentedViewController . presentedViewController )
595
595
) {
596
596
viewController = viewController . presentedViewController ;
@@ -601,16 +601,26 @@ function showUIAlertController(alertController: MDCAlertController, options: Dia
601
601
viewController = viewController . presentedViewController ;
602
602
}
603
603
}
604
- let v ;
605
604
showingDialogs . push ( alertController ) ;
606
- if ( viewController ) {
605
+ function block ( ) {
607
606
if ( alertController . popoverPresentationController ) {
608
607
alertController . popoverPresentationController . sourceView = viewController . view ;
609
608
alertController . popoverPresentationController . sourceRect = CGRectMake ( viewController . view . bounds . size . width / 2.0 , viewController . view . bounds . size . height / 2.0 , 1.0 , 1.0 ) ;
610
609
alertController . popoverPresentationController . permittedArrowDirections = 0 as any ;
611
610
}
612
611
viewController . presentViewControllerAnimatedCompletion ( alertController , true , null ) ;
613
612
}
613
+ if ( viewController . presentedViewController ) {
614
+ if ( viewController . presentedViewController . beingDismissed || options . iosForceClosePresentedViewController === true ) {
615
+ viewController . dismissViewControllerAnimatedCompletion ( true , ( ) => {
616
+ block ( ) ;
617
+ } ) ;
618
+ } else {
619
+ throw new Error ( "controller_already_presented" ) ;
620
+ }
621
+ } else {
622
+ block ( ) ;
623
+ }
614
624
return viewController ;
615
625
}
616
626
throw new Error ( 'no_controller_to_show_dialog' ) ;
0 commit comments