react-native-onesignal icon indicating copy to clipboard operation
react-native-onesignal copied to clipboard

How to clear setInAppMessageClickHandler listener

Open AuroPick opened this issue 3 years ago • 0 comments

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:

  1. Create listener in bottom navigation
  2. Reset navigation when user logout
  3. 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 />
    </>
  )

AuroPick avatar Aug 04 '22 11:08 AuroPick