{"version":3,"file":"882506a8.js","sources":["../../../src/components/globals/country-selector/CountrySelectorProvider.client.tsx"],"sourcesContent":["import {createContext, useContext, useEffect, useState, useMemo} from 'react';\nimport type {Country} from 'Js/@types/sdg';\nimport Cookies from 'js-cookie';\nimport {CountrySelectorModal} from './CountrySelectorModal.client';\n\ntype CountrySelectorContext = {\n modalOpened: boolean;\n setModalOpened: (val: boolean) => void;\n currentCountry: any;\n};\n\nconst CountrySelectorContext = createContext(\n null as unknown as CountrySelectorContext,\n);\n\nexport function CountrySelectorProvider({\n children,\n countryData,\n countryPicker,\n countryWarning,\n}: any) {\n const [modalOpened, setModalOpened] = useState(false);\n const [currentCountry, setCurrentCountry] = useState(null);\n const [selectedCountry, setSelectedCountry] = useState(null);\n const [selectedCurrency, setSelectedCurrency] = useState('');\n const [warningModalActive, setWarningModalActive] = useState(\n countryWarning || false,\n );\n\n useEffect(() => {\n loadCountryPicker();\n }, []);\n\n const loadCountryPicker = async () => {\n const initialCountryData = await fetch('/api/countries')\n .then((resp) => resp.json())\n .catch((err) => console.error({err}));\n\n if (!countryPicker?.enable) {\n // int'l user should be blocked from access\n if (!warningModalActive && countryData?.isoCode !== 'US') {\n handleCountryWarning(true);\n }\n } else if (countryPicker?.enable && warningModalActive) {\n handleCountryWarning(false);\n }\n\n // Cookie for if user has selected to stay on a country that does not match their oxygen headers\n const userSelectedCountryCode = Cookies.get('userSelectedCountryCode');\n const {userCountryData} = initialCountryData || {};\n if (\n userCountryData &&\n countryData.name &&\n countryData.isoCode !== userCountryData?.isoCode &&\n !userSelectedCountryCode\n ) {\n setCurrentCountry(countryData);\n setSelectedCountry(userCountryData);\n setSelectedCurrency(userCountryData.currency.isoCode);\n setModalOpened(true);\n return;\n }\n\n // initial int'l check\n if (!countryData?.name) {\n getCountriesList();\n return;\n }\n\n setCurrentCountry(countryData);\n setSelectedCountry(countryData);\n setSelectedCurrency(countryData.currency.isoCode);\n };\n\n const getCountriesList = async () => {\n const initialCountryData = await fetch('/api/countries')\n .then((resp) => resp.json())\n .catch((err) => console.error({err}));\n\n const {userCountryData: userCountryApiData, countries = []} =\n initialCountryData || {};\n let userCountryData = userCountryApiData;\n\n // collect and re-update the session data with complete country data if user has used a glCountry url\n const isGlUrl = !countryData.name;\n if (isGlUrl) {\n const [newUserCountryData] = countries.filter(\n (country: Country) => country.isoCode === countryData.isoCode,\n );\n\n userCountryData = newUserCountryData;\n if (newUserCountryData) {\n fetch(`/api/countries`, {\n body: JSON.stringify({\n countryCode: newUserCountryData.isoCode,\n countryName: newUserCountryData.name,\n currencyCode: newUserCountryData.currency.isoCode,\n }),\n method: 'POST',\n });\n }\n }\n\n setCurrentCountry(userCountryData);\n setSelectedCountry(userCountryData);\n setSelectedCurrency(userCountryData?.currency?.isoCode);\n if (userCountryData?.isoCode === 'US') return;\n if (countryPicker?.enable) {\n if (!isGlUrl) setModalOpened(true);\n } else {\n handleCountryWarning(true);\n }\n };\n\n const handleCountryWarning = (shouldEnable: boolean) => {\n fetch('/api/session', {\n method: 'POST',\n body: JSON.stringify({\n countryWarning: shouldEnable,\n }),\n })\n .then(() => setWarningModalActive(shouldEnable))\n .catch((error) => console.error(error));\n };\n\n const contextValue = useMemo(() => {\n return {\n modalOpened,\n setModalOpened,\n currentCountry,\n };\n }, [modalOpened, currentCountry]);\n\n return (\n
\n \n {children}\n \n \n
\n );\n}\n\nexport function useCountrySelector() {\n return useContext(CountrySelectorContext) || {};\n}\n"],"names":["CountrySelectorContext","createContext","CountrySelectorProvider","children","countryData","countryPicker","countryWarning","modalOpened","setModalOpened","useState","currentCountry","setCurrentCountry","selectedCountry","setSelectedCountry","selectedCurrency","setSelectedCurrency","warningModalActive","setWarningModalActive","useEffect","loadCountryPicker","initialCountryData","fetch","then","resp","json","catch","err","console","error","enable","handleCountryWarning","isoCode","userSelectedCountryCode","Cookies","get","userCountryData","name","currency","getCountriesList","userCountryApiData","countries","isGlUrl","newUserCountryData","filter","country","body","JSON","stringify","countryCode","countryName","currencyCode","method","shouldEnable","contextValue","useMemo","_jsxs","_jsx","CountrySelectorModal","useCountrySelector","useContext"],"mappings":"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"}