src/helpers/countryGroup.ts (297 lines of code) (raw):

import { getGeoLocation } from "../components/footer/getLocationCookie"; import type { CountryCode } from '@guardian/libs'; interface CountryGroup { name: string; currency: string; isoCountries: CountryCode[]; currencyGlyph: string; } const countryGroups: CountryGroup[] = [ { name: "United Kingdom", currency: "GBP", isoCountries: ["GB", "FK", "GI", "GG", "IM", "JE", "SH"], currencyGlyph: "£", }, { name: "United States", currency: "USD", isoCountries: ["US"], currencyGlyph: "$", }, { name: "Australia", currency: "AUD", isoCountries: ["AU", "KI", "NR", "NF", "TV"], currencyGlyph: "$", }, { name: "Europe", currency: "EUR", isoCountries: [ "AD", "AL", "AT", "BA", "BE", "BG", "BL", "CH", "CY", "CZ", "DE", "DK", "EE", "ES", "FI", "FO", "FR", "GF", "GL", "GP", "GR", "HR", "HU", "IE", "IT", "LI", "LT", "LU", "LV", "MC", "ME", "MF", "IS", "MQ", "MT", "NL", "NO", "PF", "PL", "PM", "PT", "RE", "RO", "RS", "SE", "SI", "SJ", "SK", "SM", "TF", "WF", "YT", "VA", "AX", ], currencyGlyph: "€", }, { name: "International", currency: "USD", isoCountries: [ "AE", "AF", "AG", "AI", "AM", "AO", "AQ", "AR", "AS", "AW", "AZ", "BB", "BD", "BF", "BH", "BI", "BJ", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CC", "CD", "CF", "CG", "CI", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "DJ", "DM", "DO", "DZ", "EC", "EG", "EH", "ER", "ET", "FJ", "FM", "GA", "GD", "GE", "GH", "GM", "GN", "GQ", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HT", "ID", "IL", "IN", "IO", "IQ", "IR", "JM", "JO", "JP", "KE", "KG", "KH", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LK", "LR", "LS", "LY", "MA", "MD", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MR", "MS", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NG", "NI", "NP", "NU", "OM", "PA", "PE", "PG", "PH", "PK", "PN", "PR", "PS", "PW", "PY", "QA", "RU", "RW", "SA", "SB", "SC", "SD", "SG", "SL", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TW", "TZ", "UA", "UG", "UM", "UY", "UZ", "VC", "VE", "VG", "VI", "VN", "VU", "WS", "YE", "ZA", "ZM", "ZW", ], currencyGlyph: "$", }, { name: "New Zealand", currency: "NZD", isoCountries: ["NZ", "CK"], currencyGlyph: "$", }, { name: "Canada", currency: "CAD", isoCountries: ["CA"], currencyGlyph: "$", }, ]; export const getCountryGroup = (): CountryGroup | null => { const countryCode = getGeoLocation(); if (!countryCode) { return null; } const countryGroup = countryGroups.filter((countryGroup) => countryGroup.isoCountries.includes(countryCode as CountryCode) ); return countryGroup[0] ?? null; };