@broxus/tvm-connect
Version:
TypeScript SDK for connecting to Nekoton-compatible wallets using a unified interface.
31 lines (30 loc) • 1.36 kB
JavaScript
'use client';
import { debug } from '@broxus/js-utils';
import * as React from 'react';
import { useContext } from '../hooks';
import { TvmConnectService } from '../services';
export const TvmConnectServiceContext = React.createContext(null);
export function useTvmConnectService() {
return useContext(TvmConnectServiceContext);
}
export function TvmConnectServiceProvider({ children, params, service, }) {
const context = React.useMemo(() => {
if (service instanceof TvmConnectService) {
return service;
}
debug('TvmConnectService is not provided from upper scope. Use an internal instance.');
const providers = !params?.providers || params.providers.length === 0 ? [] : params.providers;
const networks = !params?.networks || params.networks.length === 0 ? [] : params.networks;
return new TvmConnectService({
defaultNetworkId: Number(networks.at(0)?.chainId) || params?.defaultNetworkId,
providerId: providers?.at(0)?.id ?? params?.providerId,
...params,
networks,
providers,
});
}, [params, service]);
return React.createElement(TvmConnectServiceContext.Provider, { value: context }, children);
}
if (process.env.NODE_ENV !== 'production') {
TvmConnectServiceContext.displayName = 'TvmConnectServiceContext';
}