@@ -353,7 +353,7 @@ export interface IOneSignalNotifications {
353353 setDefaultUrl ( url : string ) : Promise < void > ;
354354 setDefaultTitle ( title : string ) : Promise < void > ;
355355 isPushSupported ( ) : boolean ;
356- requestPermission ( ) : Promise < void > ;
356+ requestPermission ( ) : Promise < boolean > ;
357357 addEventListener < K extends NotificationEventName > ( event : K , listener : ( obj : NotificationEventTypeMap [ K ] ) => void ) : void ;
358358 removeEventListener < K extends NotificationEventName > ( event : K , listener : ( obj : NotificationEventTypeMap [ K ] ) => void ) : void ;
359359}
@@ -394,6 +394,7 @@ export interface IOneSignalUser {
394394 removeEventListener ( event : 'change' , listener : ( change : UserChangeEvent ) => void ) : void ;
395395 setLanguage ( language : string ) : void ;
396396 getLanguage ( ) : string ;
397+ trackEvent ( name : string , properties ?: Record < string , unknown > ) : void ;
397398}
398399export interface IOneSignalPushSubscription {
399400 id : string | null | undefined ;
@@ -405,119 +406,128 @@ export interface IOneSignalPushSubscription {
405406 removeEventListener ( event : 'change' , listener : ( change : SubscriptionChangeEvent ) => void ) : void ;
406407}
407408function oneSignalLogin ( externalId : string , jwtToken ?: string ) : Promise < void > {
408-
409409 return new Promise ( ( resolve , reject ) => {
410410 if ( isOneSignalScriptFailed ) {
411411 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
412412 return ;
413413 }
414414
415415 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
416- oneSignal . login ( externalId , jwtToken ) . then ( ( ) => resolve ( ) ) ;
416+ oneSignal . login ( externalId , jwtToken )
417+ . then ( ( ) => resolve ( ) )
418+ . catch ( error => reject ( error ) ) ;
417419 } ) ;
418420 } ) ;
419421}
420422function oneSignalLogout ( ) : Promise < void > {
421-
422423 return new Promise ( ( resolve , reject ) => {
423424 if ( isOneSignalScriptFailed ) {
424425 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
425426 return ;
426427 }
427428
428429 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
429- oneSignal . logout ( ) . then ( ( ) => resolve ( ) ) ;
430+ oneSignal . logout ( )
431+ . then ( ( ) => resolve ( ) )
432+ . catch ( error => reject ( error ) ) ;
430433 } ) ;
431434 } ) ;
432435}
433436function oneSignalSetConsentGiven ( consent : boolean ) : Promise < void > {
434-
435437 return new Promise ( ( resolve , reject ) => {
436438 if ( isOneSignalScriptFailed ) {
437439 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
438440 return ;
439441 }
440442
441443 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
442- oneSignal . setConsentGiven ( consent ) . then ( ( ) => resolve ( ) ) ;
444+ oneSignal . setConsentGiven ( consent )
445+ . then ( ( ) => resolve ( ) )
446+ . catch ( error => reject ( error ) ) ;
443447 } ) ;
444448 } ) ;
445449}
446450function oneSignalSetConsentRequired ( requiresConsent : boolean ) : Promise < void > {
447-
448451 return new Promise ( ( resolve , reject ) => {
449452 if ( isOneSignalScriptFailed ) {
450453 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
451454 return ;
452455 }
453456
454457 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
455- oneSignal . setConsentRequired ( requiresConsent ) . then ( ( ) => resolve ( ) ) ;
458+ oneSignal . setConsentRequired ( requiresConsent )
459+ . then ( ( ) => resolve ( ) )
460+ . catch ( error => reject ( error ) ) ;
456461 } ) ;
457462 } ) ;
458463}
459464function slidedownPromptPush ( options ?: AutoPromptOptions ) : Promise < void > {
460-
461465 return new Promise ( ( resolve , reject ) => {
462466 if ( isOneSignalScriptFailed ) {
463467 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
464468 return ;
465469 }
466470
467471 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
468- oneSignal . Slidedown . promptPush ( options ) . then ( ( ) => resolve ( ) ) ;
472+ oneSignal . Slidedown . promptPush ( options )
473+ . then ( ( ) => resolve ( ) )
474+ . catch ( error => reject ( error ) ) ;
469475 } ) ;
470476 } ) ;
471477}
472478function slidedownPromptPushCategories ( options ?: AutoPromptOptions ) : Promise < void > {
473-
474479 return new Promise ( ( resolve , reject ) => {
475480 if ( isOneSignalScriptFailed ) {
476481 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
477482 return ;
478483 }
479484
480485 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
481- oneSignal . Slidedown . promptPushCategories ( options ) . then ( ( ) => resolve ( ) ) ;
486+ oneSignal . Slidedown . promptPushCategories ( options )
487+ . then ( ( ) => resolve ( ) )
488+ . catch ( error => reject ( error ) ) ;
482489 } ) ;
483490 } ) ;
484491}
485492function slidedownPromptSms ( options ?: AutoPromptOptions ) : Promise < void > {
486-
487493 return new Promise ( ( resolve , reject ) => {
488494 if ( isOneSignalScriptFailed ) {
489495 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
490496 return ;
491497 }
492498
493499 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
494- oneSignal . Slidedown . promptSms ( options ) . then ( ( ) => resolve ( ) ) ;
500+ oneSignal . Slidedown . promptSms ( options )
501+ . then ( ( ) => resolve ( ) )
502+ . catch ( error => reject ( error ) ) ;
495503 } ) ;
496504 } ) ;
497505}
498506function slidedownPromptEmail ( options ?: AutoPromptOptions ) : Promise < void > {
499-
500507 return new Promise ( ( resolve , reject ) => {
501508 if ( isOneSignalScriptFailed ) {
502509 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
503510 return ;
504511 }
505512
506513 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
507- oneSignal . Slidedown . promptEmail ( options ) . then ( ( ) => resolve ( ) ) ;
514+ oneSignal . Slidedown . promptEmail ( options )
515+ . then ( ( ) => resolve ( ) )
516+ . catch ( error => reject ( error ) ) ;
508517 } ) ;
509518 } ) ;
510519}
511520function slidedownPromptSmsAndEmail ( options ?: AutoPromptOptions ) : Promise < void > {
512-
513521 return new Promise ( ( resolve , reject ) => {
514522 if ( isOneSignalScriptFailed ) {
515523 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
516524 return ;
517525 }
518526
519527 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
520- oneSignal . Slidedown . promptSmsAndEmail ( options ) . then ( ( ) => resolve ( ) ) ;
528+ oneSignal . Slidedown . promptSmsAndEmail ( options )
529+ . then ( ( ) => resolve ( ) )
530+ . catch ( error => reject ( error ) ) ;
521531 } ) ;
522532 } ) ;
523533}
@@ -534,41 +544,44 @@ function slidedownRemoveEventListener(event: SlidedownEventName, listener: (wasS
534544}
535545
536546function notificationsSetDefaultUrl ( url : string ) : Promise < void > {
537-
538547 return new Promise ( ( resolve , reject ) => {
539548 if ( isOneSignalScriptFailed ) {
540549 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
541550 return ;
542551 }
543552
544553 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
545- oneSignal . Notifications . setDefaultUrl ( url ) . then ( ( ) => resolve ( ) ) ;
554+ oneSignal . Notifications . setDefaultUrl ( url )
555+ . then ( ( ) => resolve ( ) )
556+ . catch ( error => reject ( error ) ) ;
546557 } ) ;
547558 } ) ;
548559}
549560function notificationsSetDefaultTitle ( title : string ) : Promise < void > {
550-
551561 return new Promise ( ( resolve , reject ) => {
552562 if ( isOneSignalScriptFailed ) {
553563 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
554564 return ;
555565 }
556566
557567 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
558- oneSignal . Notifications . setDefaultTitle ( title ) . then ( ( ) => resolve ( ) ) ;
568+ oneSignal . Notifications . setDefaultTitle ( title )
569+ . then ( ( ) => resolve ( ) )
570+ . catch ( error => reject ( error ) ) ;
559571 } ) ;
560572 } ) ;
561573}
562- function notificationsRequestPermission ( ) : Promise < void > {
563-
574+ function notificationsRequestPermission ( ) : Promise < boolean > {
564575 return new Promise ( ( resolve , reject ) => {
565576 if ( isOneSignalScriptFailed ) {
566577 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
567578 return ;
568579 }
569580
570581 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
571- oneSignal . Notifications . requestPermission ( ) . then ( ( ) => resolve ( ) ) ;
582+ oneSignal . Notifications . requestPermission ( )
583+ . then ( result => resolve ( result ) )
584+ . catch ( error => reject ( error ) ) ;
572585 } ) ;
573586 } ) ;
574587}
@@ -585,28 +598,30 @@ function notificationsRemoveEventListener<K extends NotificationEventName>(event
585598}
586599
587600function sessionSendOutcome ( outcomeName : string , outcomeWeight ?: number ) : Promise < void > {
588-
589601 return new Promise ( ( resolve , reject ) => {
590602 if ( isOneSignalScriptFailed ) {
591603 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
592604 return ;
593605 }
594606
595607 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
596- oneSignal . Session . sendOutcome ( outcomeName , outcomeWeight ) . then ( ( ) => resolve ( ) ) ;
608+ oneSignal . Session . sendOutcome ( outcomeName , outcomeWeight )
609+ . then ( ( ) => resolve ( ) )
610+ . catch ( error => reject ( error ) ) ;
597611 } ) ;
598612 } ) ;
599613}
600614function sessionSendUniqueOutcome ( outcomeName : string ) : Promise < void > {
601-
602615 return new Promise ( ( resolve , reject ) => {
603616 if ( isOneSignalScriptFailed ) {
604617 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
605618 return ;
606619 }
607620
608621 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
609- oneSignal . Session . sendUniqueOutcome ( outcomeName ) . then ( ( ) => resolve ( ) ) ;
622+ oneSignal . Session . sendUniqueOutcome ( outcomeName )
623+ . then ( ( ) => resolve ( ) )
624+ . catch ( error => reject ( error ) ) ;
610625 } ) ;
611626 } ) ;
612627}
@@ -720,29 +735,37 @@ async function userGetLanguage(): string {
720735 return retVal ;
721736}
722737
738+ function userTrackEvent ( name : string , properties ?: Record < string , unknown > ) : void {
739+ window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
740+ oneSignal . User . trackEvent ( name , properties ) ;
741+ } ) ;
742+ }
743+
723744function pushSubscriptionOptIn ( ) : Promise < void > {
724-
725745 return new Promise ( ( resolve , reject ) => {
726746 if ( isOneSignalScriptFailed ) {
727747 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
728748 return ;
729749 }
730750
731751 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
732- oneSignal . User . PushSubscription . optIn ( ) . then ( ( ) => resolve ( ) ) ;
752+ oneSignal . User . PushSubscription . optIn ( )
753+ . then ( ( ) => resolve ( ) )
754+ . catch ( error => reject ( error ) ) ;
733755 } ) ;
734756 } ) ;
735757}
736758function pushSubscriptionOptOut ( ) : Promise < void > {
737-
738759 return new Promise ( ( resolve , reject ) => {
739760 if ( isOneSignalScriptFailed ) {
740761 reject ( new Error ( 'OneSignal script failed to load.' ) ) ;
741762 return ;
742763 }
743764
744765 window . OneSignalDeferred ?. push ( ( oneSignal : IOneSignalOneSignal ) => {
745- oneSignal . User . PushSubscription . optOut ( ) . then ( ( ) => resolve ( ) ) ;
766+ oneSignal . User . PushSubscription . optOut ( )
767+ . then ( ( ) => resolve ( ) )
768+ . catch ( error => reject ( error ) ) ;
746769 } ) ;
747770 } ) ;
748771}
@@ -795,6 +818,7 @@ const UserNamespace: IOneSignalUser = {
795818 removeEventListener : userRemoveEventListener ,
796819 setLanguage : userSetLanguage ,
797820 getLanguage : userGetLanguage ,
821+ trackEvent : userTrackEvent ,
798822 PushSubscription : PushSubscriptionNamespace ,
799823} ;
800824
0 commit comments