@@ -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,76 +112,30 @@ class OSDemo extends React.Component<Props, State> {
46112 // enablePushToUpdate: true,
47113 // });
48114
49- OneSignal . Notifications . addEventListener (
50- 'foregroundWillDisplay' ,
51- ( event ) => {
52- this . OSLog ( 'OneSignal: notification will show in foreground:' , event ) ;
53- let notif = event . getNotification ( ) ;
54-
55- const cancelButton = {
56- text : 'Cancel' ,
57- onPress : ( ) => {
58- event . preventDefault ( ) ;
59- } ,
60- style : 'cancel' ,
61- } ;
62-
63- const completeButton = {
64- text : 'Display' ,
65- onPress : ( ) => {
66- event . getNotification ( ) . display ( ) ;
67- } ,
68- } ;
69-
70- Alert . alert (
71- 'Display notification?' ,
72- notif . title ,
73- [ cancelButton , completeButton ] ,
74- {
75- cancelable : true ,
76- } ,
77- ) ;
78- } ,
79- ) ;
80-
81- OneSignal . Notifications . addEventListener ( 'click' , ( event ) => {
82- this . OSLog ( 'OneSignal: notification clicked:' , event ) ;
83- } ) ;
84-
85- OneSignal . InAppMessages . addEventListener ( 'click' , ( event ) => {
86- this . OSLog ( 'OneSignal IAM clicked:' , event ) ;
87- } ) ;
88-
89- OneSignal . InAppMessages . addEventListener ( 'willDisplay' , ( event ) => {
90- this . OSLog ( 'OneSignal: will display IAM: ' , event ) ;
91- } ) ;
92-
93- OneSignal . InAppMessages . addEventListener ( 'didDisplay' , ( event ) => {
94- this . OSLog ( 'OneSignal: did display IAM: ' , event ) ;
95- } ) ;
96-
97- OneSignal . InAppMessages . addEventListener ( 'willDismiss' , ( event ) => {
98- this . OSLog ( 'OneSignal: will dismiss IAM: ' , event ) ;
99- } ) ;
100-
101- OneSignal . InAppMessages . addEventListener ( 'didDismiss' , ( event ) => {
102- this . OSLog ( 'OneSignal: did dismiss IAM: ' , event ) ;
103- } ) ;
104-
105- OneSignal . User . pushSubscription . addEventListener (
106- 'change' ,
107- ( subscription ) => {
108- this . OSLog ( 'OneSignal: subscription changed:' , subscription ) ;
109- } ,
110- ) ;
111-
112- OneSignal . Notifications . addEventListener ( 'permissionChange' , ( granted ) => {
113- this . OSLog ( 'OneSignal: permission changed:' , granted ) ;
114- } ) ;
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+ }
115126
116- OneSignal . User . addEventListener ( 'change' , ( event ) => {
117- this . OSLog ( 'OneSignal: user changed: ' , event ) ;
118- } ) ;
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 ) ;
119139 }
120140
121141 OSLog = ( message : string , optionalArg : any = null ) => {
0 commit comments