You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
spa_instat_tv/src/features/GlobalStores/index.tsx

61 lines
1.4 KiB

import {
ReactNode,
useEffect,
useState,
} from 'react'
import { useLocation } from 'react-router'
import { useMatomo } from '@jonkoops/matomo-tracker-react'
import { getLanguageUrlParam } from 'helpers/languageUrlParam'
import { AuthStore } from 'features/AuthStore'
import { LexicsStore } from 'features/LexicsStore'
import { getGeoInfo } from 'requests'
import { redirectToUrl } from 'helpers'
const initialLanguage = getLanguageUrlParam()
type Props = {
children: ReactNode,
}
export const GlobalStores = ({ children }: Props) => {
const { pathname, search } = useLocation()
const { trackPageView } = useMatomo()
const [isGeoReady, setIsGeoReady] = useState(false)
useEffect(() => {
const isProduction = process.env.REACT_APP_ENV === 'production'
if (isProduction) trackPageView()
}, [trackPageView, pathname, search])
useEffect(() => {
(async () => {
if (pathname === '/' && search === '') {
const geo = await getGeoInfo()
if (geo.country_code === 'TN') {
redirectToUrl('https://diwan.insports.tv')
return
}
}
setIsGeoReady(true)
})()
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
if (!isGeoReady) return null
return (
<LexicsStore initialLanguage={initialLanguage}>
<AuthStore>
{children}
</AuthStore>
</LexicsStore>
)
}