@@ -26,6 +26,72 @@ export interface State {
2626}
2727
2828class OSDemo extends React . Component < Props , State > {
29+ // Event listener references for cleanup
30+ private onForegroundWillDisplay = ( event : any ) => {
31+ this . OSLog ( 'OneSignal: notification will show in foreground:' , event ) ;
32+ let notif = event . getNotification ( ) ;
33+
34+ const cancelButton = {
35+ text : 'Cancel' ,
36+ onPress : ( ) => {
37+ event . preventDefault ( ) ;
38+ } ,
39+ style : 'cancel' ,
40+ } ;
41+
42+ const completeButton = {
43+ text : 'Display' ,
44+ onPress : ( ) => {
45+ event . getNotification ( ) . display ( ) ;
46+ } ,
47+ } ;
48+
49+ Alert . alert (
50+ 'Display notification?' ,
51+ notif . title ,
52+ [ cancelButton , completeButton ] ,
53+ {
54+ cancelable : true ,
55+ } ,
56+ ) ;
57+ } ;
58+
59+ private onNotificationClick = ( event : any ) => {
60+ this . OSLog ( 'OneSignal: notification clicked:' , event ) ;
61+ } ;
62+
63+ private onIAMClick = ( event : any ) => {
64+ this . OSLog ( 'OneSignal IAM clicked:' , event ) ;
65+ } ;
66+
67+ private onIAMWillDisplay = ( event : any ) => {
68+ this . OSLog ( 'OneSignal: will display IAM: ' , event ) ;
69+ } ;
70+
71+ private onIAMDidDisplay = ( event : any ) => {
72+ this . OSLog ( 'OneSignal: did display IAM: ' , event ) ;
73+ } ;
74+
75+ private onIAMWillDismiss = ( event : any ) => {
76+ this . OSLog ( 'OneSignal: will dismiss IAM: ' , event ) ;
77+ } ;
78+
79+ private onIAMDidDismiss = ( event : any ) => {
80+ this . OSLog ( 'OneSignal: did dismiss IAM: ' , event ) ;
81+ } ;
82+
83+ private onSubscriptionChange = ( subscription : any ) => {
84+ this . OSLog ( 'OneSignal: subscription changed:' , subscription ) ;
85+ } ;
86+
87+ private onPermissionChange = ( granted : any ) => {
88+ this . OSLog ( 'OneSignal: permission changed:' , granted ) ;
89+ } ;
90+
91+ private onUserChange = ( event : any ) => {
92+ this . OSLog ( 'OneSignal: user changed: ' , event ) ;
93+ } ;
94+
2995 constructor ( props : Props ) {
3096 super ( props ) ;
3197
@@ -46,70 +112,30 @@ class OSDemo extends React.Component<Props, State> {
46112 // enablePushToUpdate: true,
47113 // });
48114
49- OneSignal . Notifications . addEventListener ( 'foregroundWillDisplay' , event => {
50- this . OSLog ( 'OneSignal: notification will show in foreground:' , event ) ;
51- let notif = event . getNotification ( ) ;
52-
53- const cancelButton = {
54- text : 'Cancel' ,
55- onPress : ( ) => {
56- event . preventDefault ( ) ;
57- } ,
58- style : 'cancel' ,
59- } ;
60-
61- const completeButton = {
62- text : 'Display' ,
63- onPress : ( ) => {
64- event . getNotification ( ) . display ( ) ;
65- } ,
66- } ;
67-
68- Alert . alert (
69- 'Display notification?' ,
70- notif . title ,
71- [ cancelButton , completeButton ] ,
72- {
73- cancelable : true ,
74- } ,
75- ) ;
76- } ) ;
77-
78- OneSignal . Notifications . addEventListener ( 'click' , event => {
79- this . OSLog ( 'OneSignal: notification clicked:' , event ) ;
80- } ) ;
81-
82- OneSignal . InAppMessages . addEventListener ( 'click' , event => {
83- this . OSLog ( 'OneSignal IAM clicked:' , event ) ;
84- } ) ;
85-
86- OneSignal . InAppMessages . addEventListener ( 'willDisplay' , event => {
87- this . OSLog ( 'OneSignal: will display IAM: ' , event ) ;
88- } ) ;
89-
90- OneSignal . InAppMessages . addEventListener ( 'didDisplay' , event => {
91- this . OSLog ( 'OneSignal: did display IAM: ' , event ) ;
92- } ) ;
93-
94- OneSignal . InAppMessages . addEventListener ( 'willDismiss' , event => {
95- this . OSLog ( 'OneSignal: will dismiss IAM: ' , event ) ;
96- } ) ;
97-
98- OneSignal . InAppMessages . addEventListener ( 'didDismiss' , event => {
99- this . OSLog ( 'OneSignal: did dismiss IAM: ' , event ) ;
100- } ) ;
101-
102- OneSignal . User . pushSubscription . addEventListener ( 'change' , subscription => {
103- this . OSLog ( 'OneSignal: subscription changed:' , subscription ) ;
104- } ) ;
105-
106- OneSignal . Notifications . addEventListener ( 'permissionChange' , granted => {
107- this . OSLog ( 'OneSignal: permission changed:' , granted ) ;
108- } ) ;
109-
110- OneSignal . User . addEventListener ( 'change' , event => {
111- this . OSLog ( 'OneSignal: user changed: ' , event ) ;
112- } ) ;
115+ OneSignal . Notifications . addEventListener ( 'foregroundWillDisplay' , this . onForegroundWillDisplay ) ;
116+ OneSignal . Notifications . addEventListener ( 'click' , this . onNotificationClick ) ;
117+ OneSignal . InAppMessages . addEventListener ( 'click' , this . onIAMClick ) ;
118+ OneSignal . InAppMessages . addEventListener ( 'willDisplay' , this . onIAMWillDisplay ) ;
119+ OneSignal . InAppMessages . addEventListener ( 'didDisplay' , this . onIAMDidDisplay ) ;
120+ OneSignal . InAppMessages . addEventListener ( 'willDismiss' , this . onIAMWillDismiss ) ;
121+ OneSignal . InAppMessages . addEventListener ( 'didDismiss' , this . onIAMDidDismiss ) ;
122+ OneSignal . User . pushSubscription . addEventListener ( 'change' , this . onSubscriptionChange ) ;
123+ OneSignal . Notifications . addEventListener ( 'permissionChange' , this . onPermissionChange ) ;
124+ OneSignal . User . addEventListener ( 'change' , this . onUserChange ) ;
125+ }
126+
127+ componentWillUnmount ( ) {
128+ // Clean up all event listeners
129+ OneSignal . Notifications . removeEventListener ( 'foregroundWillDisplay' , this . onForegroundWillDisplay ) ;
130+ OneSignal . Notifications . removeEventListener ( 'click' , this . onNotificationClick ) ;
131+ OneSignal . InAppMessages . removeEventListener ( 'click' , this . onIAMClick ) ;
132+ OneSignal . InAppMessages . removeEventListener ( 'willDisplay' , this . onIAMWillDisplay ) ;
133+ OneSignal . InAppMessages . removeEventListener ( 'didDisplay' , this . onIAMDidDisplay ) ;
134+ OneSignal . InAppMessages . removeEventListener ( 'willDismiss' , this . onIAMWillDismiss ) ;
135+ OneSignal . InAppMessages . removeEventListener ( 'didDismiss' , this . onIAMDidDismiss ) ;
136+ OneSignal . User . pushSubscription . removeEventListener ( 'change' , this . onSubscriptionChange ) ;
137+ OneSignal . Notifications . removeEventListener ( 'permissionChange' , this . onPermissionChange ) ;
138+ OneSignal . User . removeEventListener ( 'change' , this . onUserChange ) ;
113139 }
114140
115141 OSLog = ( message : string , optionalArg : any = null ) => {
0 commit comments