diff --git a/native/navigation/policy-acknowledgment-handler.react.js b/native/navigation/policy-acknowledgment-handler.react.js new file mode 100644 --- /dev/null +++ b/native/navigation/policy-acknowledgment-handler.react.js @@ -0,0 +1,28 @@ +// @flow + +import { useNavigation } from '@react-navigation/native'; +import * as React from 'react'; + +import { policyTypes } from 'lib/facts/policies'; + +import { useSelector } from '../redux/redux-utils'; +import { TermsAndPrivacyRouteName } from './route-names'; + +function PolicyAcknowledgmentHandler(): null { + const userPolicies = useSelector(state => state.userPolicies); + const navigation = useNavigation(); + + React.useEffect(() => { + const tosAndPrivacyState = userPolicies?.[policyTypes.tosAndPrivacyPolicy]; + if (tosAndPrivacyState && !tosAndPrivacyState?.isAcknowledged) { + navigation.navigate<'TermsAndPrivacyModal'>({ + name: TermsAndPrivacyRouteName, + params: { policyType: policyTypes.tosAndPrivacyPolicy }, + }); + } + }, [navigation, userPolicies]); + + return null; +} + +export default PolicyAcknowledgmentHandler; diff --git a/native/root.react.js b/native/root.react.js --- a/native/root.react.js +++ b/native/root.react.js @@ -15,7 +15,10 @@ initialWindowMetrics, } from 'react-native-safe-area-context'; import { Provider } from 'react-redux'; -import { PersistGate as ReduxPersistGate } from 'redux-persist/integration/react'; +import { + PersistGate, + PersistGate as ReduxPersistGate, +} from 'redux-persist/integration/react'; import { actionLogger } from 'lib/utils/action-logger'; @@ -35,6 +38,7 @@ import { validNavState } from './navigation/navigation-utils'; import OrientationHandler from './navigation/orientation-handler.react'; import { navStateAsyncStorageKey } from './navigation/persistance'; +import PolicyAcknowledgmentHandler from './navigation/policy-acknowledgment-handler.react'; import RootNavigator from './navigation/root-navigator.react'; import ConnectivityUpdater from './redux/connectivity-updater.react'; import { DimensionsUpdater } from './redux/dimensions-updater.react'; @@ -236,6 +240,9 @@ ref={containerRef} > + + + ); }