1- import { NativeStackScreenProps } from '@react-navigation/native-stack ' ;
1+ import { useFocusEffect } from '@react-navigation/native' ;
22import React , { useCallback , useEffect , useState } from 'react' ;
33import {
44 Alert ,
@@ -10,16 +10,13 @@ import {
1010 View ,
1111} from 'react-native' ;
1212import { LogLevel , OneSignal } from 'react-native-onesignal' ;
13- import type { RootStackParamList } from './App' ;
1413import { renderButtonView } from './Helpers' ;
1514import OSButtons from './OSButtons' ;
1615import OSConsole from './OSConsole' ;
1716
1817const APP_ID = '77e32082-ea27-42e3-a898-c72e141824ef' ;
1918
20- type Props = NativeStackScreenProps < RootStackParamList , 'Home' > ;
21-
22- const OSDemo : React . FC < Props > = ( { navigation } ) => {
19+ const OSDemo : React . FC = ( ) => {
2320 const [ consoleValue , setConsoleValue ] = useState ( '' ) ;
2421 const [ inputValue , setInputValue ] = useState ( '' ) ;
2522
@@ -143,78 +140,93 @@ const OSDemo: React.FC<Props> = ({ navigation }) => {
143140 OneSignal . Debug . setLogLevel ( LogLevel . None ) ;
144141 } , [ ] ) ;
145142
146- useEffect ( ( ) => {
147- const setup = async ( ) => {
148- OneSignal . LiveActivities . setupDefault ( ) ;
149- OneSignal . Notifications . addEventListener (
150- 'foregroundWillDisplay' ,
151- onForegroundWillDisplay ,
152- ) ;
153- OneSignal . Notifications . addEventListener ( 'click' , onNotificationClick ) ;
154- OneSignal . InAppMessages . addEventListener ( 'click' , onIAMClick ) ;
155- OneSignal . InAppMessages . addEventListener ( 'willDisplay' , onIAMWillDisplay ) ;
156- OneSignal . InAppMessages . addEventListener ( 'didDisplay' , onIAMDidDisplay ) ;
157- OneSignal . InAppMessages . addEventListener ( 'willDismiss' , onIAMWillDismiss ) ;
158- OneSignal . InAppMessages . addEventListener ( 'didDismiss' , onIAMDidDismiss ) ;
159- OneSignal . User . pushSubscription . addEventListener (
160- 'change' ,
161- onSubscriptionChange ,
162- ) ;
163- OneSignal . Notifications . addEventListener (
164- 'permissionChange' ,
165- onPermissionChange ,
166- ) ;
167- OneSignal . User . addEventListener ( 'change' , onUserChange ) ;
168- } ;
143+ useFocusEffect (
144+ useCallback ( ( ) => {
145+ console . log ( 'Setting up event listeners' ) ;
169146
170- setup ( ) ;
147+ const setup = async ( ) => {
148+ OneSignal . LiveActivities . setupDefault ( ) ;
149+ OneSignal . Notifications . addEventListener (
150+ 'foregroundWillDisplay' ,
151+ onForegroundWillDisplay ,
152+ ) ;
153+ OneSignal . Notifications . addEventListener ( 'click' , onNotificationClick ) ;
154+ OneSignal . InAppMessages . addEventListener ( 'click' , onIAMClick ) ;
155+ OneSignal . InAppMessages . addEventListener (
156+ 'willDisplay' ,
157+ onIAMWillDisplay ,
158+ ) ;
159+ OneSignal . InAppMessages . addEventListener ( 'didDisplay' , onIAMDidDisplay ) ;
160+ OneSignal . InAppMessages . addEventListener (
161+ 'willDismiss' ,
162+ onIAMWillDismiss ,
163+ ) ;
164+ OneSignal . InAppMessages . addEventListener ( 'didDismiss' , onIAMDidDismiss ) ;
165+ OneSignal . User . pushSubscription . addEventListener (
166+ 'change' ,
167+ onSubscriptionChange ,
168+ ) ;
169+ OneSignal . Notifications . addEventListener (
170+ 'permissionChange' ,
171+ onPermissionChange ,
172+ ) ;
173+ OneSignal . User . addEventListener ( 'change' , onUserChange ) ;
174+ } ;
171175
172- return ( ) => {
173- // Clean up all event listeners
174- OneSignal . Notifications . removeEventListener (
175- 'foregroundWillDisplay' ,
176- onForegroundWillDisplay ,
177- ) ;
178- OneSignal . Notifications . removeEventListener ( 'click' , onNotificationClick ) ;
179- OneSignal . InAppMessages . removeEventListener ( 'click' , onIAMClick ) ;
180- OneSignal . InAppMessages . removeEventListener (
181- 'willDisplay' ,
182- onIAMWillDisplay ,
183- ) ;
184- OneSignal . InAppMessages . removeEventListener (
185- 'didDisplay' ,
186- onIAMDidDisplay ,
187- ) ;
188- OneSignal . InAppMessages . removeEventListener (
189- 'willDismiss' ,
190- onIAMWillDismiss ,
191- ) ;
192- OneSignal . InAppMessages . removeEventListener (
193- 'didDismiss' ,
194- onIAMDidDismiss ,
195- ) ;
196- OneSignal . User . pushSubscription . removeEventListener (
197- 'change' ,
198- onSubscriptionChange ,
199- ) ;
200- OneSignal . Notifications . removeEventListener (
201- 'permissionChange' ,
202- onPermissionChange ,
203- ) ;
204- OneSignal . User . removeEventListener ( 'change' , onUserChange ) ;
205- } ;
206- } , [
207- onForegroundWillDisplay ,
208- onNotificationClick ,
209- onIAMClick ,
210- onIAMWillDisplay ,
211- onIAMDidDisplay ,
212- onIAMWillDismiss ,
213- onIAMDidDismiss ,
214- onSubscriptionChange ,
215- onPermissionChange ,
216- onUserChange ,
217- ] ) ;
176+ setup ( ) ;
177+
178+ return ( ) => {
179+ console . log ( 'Cleaning up event listeners' ) ;
180+
181+ // Clean up all event listeners
182+ OneSignal . Notifications . removeEventListener (
183+ 'foregroundWillDisplay' ,
184+ onForegroundWillDisplay ,
185+ ) ;
186+ OneSignal . Notifications . removeEventListener (
187+ 'click' ,
188+ onNotificationClick ,
189+ ) ;
190+ OneSignal . InAppMessages . removeEventListener ( 'click' , onIAMClick ) ;
191+ OneSignal . InAppMessages . removeEventListener (
192+ 'willDisplay' ,
193+ onIAMWillDisplay ,
194+ ) ;
195+ OneSignal . InAppMessages . removeEventListener (
196+ 'didDisplay' ,
197+ onIAMDidDisplay ,
198+ ) ;
199+ OneSignal . InAppMessages . removeEventListener (
200+ 'willDismiss' ,
201+ onIAMWillDismiss ,
202+ ) ;
203+ OneSignal . InAppMessages . removeEventListener (
204+ 'didDismiss' ,
205+ onIAMDidDismiss ,
206+ ) ;
207+ OneSignal . User . pushSubscription . removeEventListener (
208+ 'change' ,
209+ onSubscriptionChange ,
210+ ) ;
211+ OneSignal . Notifications . removeEventListener (
212+ 'permissionChange' ,
213+ onPermissionChange ,
214+ ) ;
215+ OneSignal . User . removeEventListener ( 'change' , onUserChange ) ;
216+ } ;
217+ } , [
218+ onForegroundWillDisplay ,
219+ onNotificationClick ,
220+ onIAMClick ,
221+ onIAMWillDisplay ,
222+ onIAMDidDisplay ,
223+ onIAMWillDismiss ,
224+ onIAMDidDismiss ,
225+ onSubscriptionChange ,
226+ onPermissionChange ,
227+ onUserChange ,
228+ ] ) ,
229+ ) ;
218230
219231 const inputChange = useCallback ( ( text : string ) => {
220232 setInputValue ( text ) ;
@@ -224,11 +236,6 @@ const OSDemo: React.FC<Props> = ({ navigation }) => {
224236 < SafeAreaView style = { styles . container } >
225237 < View style = { styles . header } >
226238 < Text style = { styles . title } > OneSignal</ Text >
227- < View style = { styles . navButton } >
228- { renderButtonView ( 'Go to Details' , ( ) => {
229- navigation . navigate ( 'Details' ) ;
230- } ) }
231- </ View >
232239 < OSConsole value = { consoleValue } />
233240 < View style = { styles . clearButton } >
234241 { renderButtonView ( 'X' , ( ) => {
@@ -268,11 +275,6 @@ const styles = StyleSheet.create({
268275 alignSelf : 'center' ,
269276 paddingVertical : 10 ,
270277 } ,
271- navButton : {
272- position : 'absolute' ,
273- right : 0 ,
274- top : 10 ,
275- } ,
276278 clearButton : {
277279 position : 'absolute' ,
278280 right : 0 ,
0 commit comments