UNPKG

@dynamic-labs/sdk-react-core

Version:

A React SDK for implementing wallet web3 authentication and authorization to your website.

57 lines (52 loc) 2.2 kB
'use client' 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _tslib = require('../../../../_virtual/_tslib.cjs'); var jsxRuntime = require('react/jsx-runtime'); var React = require('react'); var walletConnectorCore = require('@dynamic-labs/wallet-connector-core'); const IpConfigurationContext = React.createContext(undefined); const IpConfigurationContextProvider = ({ children, }) => { const [ipConfiguration, setIpConfiguration] = React.useState(null); const getIpConfiguration = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () { if (ipConfiguration) { return ipConfiguration; } try { const response = yield fetch('http://ip-api.com/json'); if (!response.ok) { return; } const data = yield response.json(); if (data.status !== 'success') { return; } const { country, countryCode } = data; const configuration = { country, countryCode }; setIpConfiguration(configuration); return configuration; } catch (e) { walletConnectorCore.logger.warn('Error fetching IP configuration', e); return; } }), [ipConfiguration, setIpConfiguration]); const removeIpConfiguration = React.useCallback(() => { setIpConfiguration(null); }, [setIpConfiguration]); const value = React.useMemo(() => ({ getIpConfiguration, removeIpConfiguration, }), [getIpConfiguration, removeIpConfiguration]); return (jsxRuntime.jsx(IpConfigurationContext.Provider, { value: value, children: children })); }; const useIpConfigurationContext = () => { const context = React.useContext(IpConfigurationContext); if (context === undefined) { throw new Error('usage of useIpConfigurationContext not wrapped in `IpConfigurationContextProvider`.'); } return context; }; exports.IpConfigurationContext = IpConfigurationContext; exports.IpConfigurationContextProvider = IpConfigurationContextProvider; exports.useIpConfigurationContext = useIpConfigurationContext;