@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
JavaScript
'use client'
;
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;