UNPKG

@reservoir0x/relay-kit-ui

Version:

Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.

61 lines 2.71 kB
import { useMemo } from 'react'; import useIpAddress from './useIpAddress.js'; import useMoonPayCurrencies from './useMoonPayCurrencies.js'; import useMoonPayGeolocation from './useMoonPayGeolocation.js'; import { convertSupportedCurrencies } from '../utils/moonPay.js'; export default function useSupportedMoonPayCurrencyCode(codes, apiKey, token) { const { data: ipAddressResponse } = useIpAddress({ staleTime: Infinity, gcTime: Infinity }); const { data: geolocationResponse } = useMoonPayGeolocation({ apiKey, ipAddress: ipAddressResponse?.ip }, { staleTime: Infinity, gcTime: Infinity }); const { data: moonPayCurrencies } = useMoonPayCurrencies({ apiKey }, { staleTime: 1000 * 60 * 60 * 24, //1 day retryDelay: 1000 * 60 * 60 * 10 //10 minutes }); return useMemo(() => { const supportedCurrencies = convertSupportedCurrencies(moonPayCurrencies); const supportedCurrenciesMap = supportedCurrencies.reduce((map, currency) => { map[currency.code] = currency; return map; }, {}); let supportedMoonPayCurrencyCode; if (!geolocationResponse) { supportedMoonPayCurrencyCode = codes.find((code) => { const currency = supportedCurrenciesMap[code]; return token?.chainId ? currency && currency.chainId !== `${token.chainId}` : currency !== undefined; }); } else { supportedMoonPayCurrencyCode = codes.find((code) => { const currency = supportedCurrenciesMap[code]; if (currency) { const countryCode = geolocationResponse?.alpha2; const state = geolocationResponse?.state; if (countryCode) { const unsupportedCountry = currency.notAllowedCountries.includes(countryCode); const unsupportedState = countryCode === 'US' && state && currency.notAllowedUSStates.includes(state); return (!unsupportedCountry && !unsupportedState && (token?.chainId ? currency.chainId !== `${token.chainId}` : true)); } else { return false; } } }); } return supportedCurrenciesMap[supportedMoonPayCurrencyCode ?? 'eth']; }, [codes, moonPayCurrencies, geolocationResponse, token]); } //# sourceMappingURL=useSupportedMoonPayCurrencyCode.js.map