react-native-onesignal
react-native-onesignal copied to clipboard
How to clear setInAppMessageClickHandler listener
Description:
I created a setInAppMessageClickHandler in my bottom navigation. I want to clear this listener when user logout. How can I do that
Environment
"react-native-onesignal": "4.3.8" package manager: yarn
Steps to Reproduce Issue:
- Create listener in bottom navigation
- Reset navigation when user logout
- Listener still working
Anything else:
InAppListener.js
import { useCallback, useEffect, memo } from 'react'
import lodash from 'lodash'
import { Linking } from 'react-native'
import OneSignal from 'react-native-onesignal'
const InAppListenerComponent = () => {
// handle in app message
const handler = useCallback((event) => {
if (lodash.isEmpty(event)) return
if (!event.click_name) return
Linking.openURL(event.click_name)
}, [])
// create listener for OneSignal
useEffect(() => {
OneSignal.setInAppMessageClickHandler(handler)
}, [handler])
return null
}
export const InAppListener = memo(InAppListenerComponent)
BottomNavigation.js
return (
<>
<Tab.Navigator>
...
</Tab.Navigator>
<InAppListener />
</>
)