@@ -927,27 +927,49 @@ export class OAuthService extends AuthConfig implements OnDestroy {
927
927
display : 'popup'
928
928
} ) . then ( url => {
929
929
return new Promise ( ( resolve , reject ) => {
930
+ /**
931
+ * Error handling section
932
+ */
933
+ const checkForPopupClosedInterval = 500 ;
930
934
let windowRef = window . open ( url , '_blank' , this . calculatePopupFeatures ( options ) ) ;
935
+ let checkForPopupClosedTimer : any ;
936
+ const checkForPopupClosed = ( ) => {
937
+ if ( ! windowRef || windowRef . closed ) {
938
+ cleanup ( ) ;
939
+ reject ( new OAuthErrorEvent ( 'popup_closed' , { } ) ) ;
940
+ }
941
+ } ;
942
+ if ( ! windowRef ) {
943
+ reject ( new OAuthErrorEvent ( 'popup_blocked' , { } ) ) ;
944
+ } else {
945
+ checkForPopupClosedTimer = window . setInterval ( checkForPopupClosed , checkForPopupClosedInterval ) ;
946
+ }
931
947
932
948
const cleanup = ( ) => {
949
+ window . clearInterval ( checkForPopupClosedTimer ) ;
933
950
window . removeEventListener ( 'message' , listener ) ;
934
- windowRef . close ( ) ;
951
+ if ( windowRef !== null ) {
952
+ windowRef . close ( ) ;
953
+ }
935
954
windowRef = null ;
936
955
} ;
937
956
938
957
const listener = ( e : MessageEvent ) => {
939
958
const message = this . processMessageEventMessage ( e ) ;
940
-
941
- this . tryLogin ( {
942
- customHashFragment : message ,
943
- preventClearHashAfterLogin : true ,
944
- } ) . then ( ( ) => {
945
- cleanup ( ) ;
946
- resolve ( ) ;
947
- } , err => {
948
- cleanup ( ) ;
949
- reject ( err ) ;
950
- } ) ;
959
+ if ( message && message !== null ) {
960
+ this . tryLogin ( {
961
+ customHashFragment : message ,
962
+ preventClearHashAfterLogin : true ,
963
+ } ) . then ( ( ) => {
964
+ cleanup ( ) ;
965
+ resolve ( ) ;
966
+ } , err => {
967
+ cleanup ( ) ;
968
+ reject ( err ) ;
969
+ } ) ;
970
+ } else {
971
+ console . log ( 'false event firing' ) ;
972
+ }
951
973
} ;
952
974
953
975
window . addEventListener ( 'message' , listener ) ;
0 commit comments