@@ -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
@@ -48,74 +114,73 @@ class OSDemo extends React.Component<Props, State> {
48114
49115 OneSignal . Notifications . addEventListener (
50116 '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- } ,
117+ this . onForegroundWillDisplay ,
118+ ) ;
119+ OneSignal . Notifications . addEventListener ( 'click' , this . onNotificationClick ) ;
120+ OneSignal . InAppMessages . addEventListener ( 'click' , this . onIAMClick ) ;
121+ OneSignal . InAppMessages . addEventListener (
122+ 'willDisplay' ,
123+ this . onIAMWillDisplay ,
124+ ) ;
125+ OneSignal . InAppMessages . addEventListener (
126+ 'didDisplay' ,
127+ this . onIAMDidDisplay ,
128+ ) ;
129+ OneSignal . InAppMessages . addEventListener (
130+ 'willDismiss' ,
131+ this . onIAMWillDismiss ,
132+ ) ;
133+ OneSignal . InAppMessages . addEventListener (
134+ 'didDismiss' ,
135+ this . onIAMDidDismiss ,
79136 ) ;
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-
105137 OneSignal . User . pushSubscription . addEventListener (
106138 'change' ,
107- ( subscription ) => {
108- this . OSLog ( 'OneSignal: subscription changed:' , subscription ) ;
109- } ,
139+ this . onSubscriptionChange ,
110140 ) ;
141+ OneSignal . Notifications . addEventListener (
142+ 'permissionChange' ,
143+ this . onPermissionChange ,
144+ ) ;
145+ OneSignal . User . addEventListener ( 'change' , this . onUserChange ) ;
146+ }
111147
112- OneSignal . Notifications . addEventListener ( 'permissionChange' , ( granted ) => {
113- this . OSLog ( 'OneSignal: permission changed:' , granted ) ;
114- } ) ;
115-
116- OneSignal . User . addEventListener ( 'change' , ( event ) => {
117- this . OSLog ( 'OneSignal: user changed: ' , event ) ;
118- } ) ;
148+ componentWillUnmount ( ) {
149+ // Clean up all event listeners
150+ OneSignal . Notifications . removeEventListener (
151+ 'foregroundWillDisplay' ,
152+ this . onForegroundWillDisplay ,
153+ ) ;
154+ OneSignal . Notifications . removeEventListener (
155+ 'click' ,
156+ this . onNotificationClick ,
157+ ) ;
158+ OneSignal . InAppMessages . removeEventListener ( 'click' , this . onIAMClick ) ;
159+ OneSignal . InAppMessages . removeEventListener (
160+ 'willDisplay' ,
161+ this . onIAMWillDisplay ,
162+ ) ;
163+ OneSignal . InAppMessages . removeEventListener (
164+ 'didDisplay' ,
165+ this . onIAMDidDisplay ,
166+ ) ;
167+ OneSignal . InAppMessages . removeEventListener (
168+ 'willDismiss' ,
169+ this . onIAMWillDismiss ,
170+ ) ;
171+ OneSignal . InAppMessages . removeEventListener (
172+ 'didDismiss' ,
173+ this . onIAMDidDismiss ,
174+ ) ;
175+ OneSignal . User . pushSubscription . removeEventListener (
176+ 'change' ,
177+ this . onSubscriptionChange ,
178+ ) ;
179+ OneSignal . Notifications . removeEventListener (
180+ 'permissionChange' ,
181+ this . onPermissionChange ,
182+ ) ;
183+ OneSignal . User . removeEventListener ( 'change' , this . onUserChange ) ;
119184 }
120185
121186 OSLog = ( message : string , optionalArg : any = null ) => {
0 commit comments