UNPKG

ignite-router-flux

Version:

Infinite Red's hot boilerplate for React Native.

39 lines (34 loc) 1.04 kB
import { NavigationActions } from 'react-navigation' // gets the current screen from navigation state const getCurrentRouteName = (navigationState) => { if (!navigationState) { return null } const route = navigationState.routes[navigationState.index] // dive into nested navigators if (route.routes) { return getCurrentRouteName(route) } return route.routeName } const screenTracking = ({ getState }) => next => (action) => { if ( action.type !== NavigationActions.NAVIGATE && action.type !== NavigationActions.BACK ) { return next(action) } const currentScreen = getCurrentRouteName(getState().nav) const result = next(action) const nextScreen = getCurrentRouteName(getState().nav) if (nextScreen !== currentScreen) { try { console.tron.log(`NAVIGATING ${currentScreen} to ${nextScreen}`) // Example: Analytics.trackEvent('user_navigation', {currentScreen, nextScreen}) } catch (e) { console.tron.log(e) } } return result } export default screenTracking