UNPKG

@broxus/tvm-connect

Version:

TypeScript SDK for connecting to Nekoton-compatible wallets using a unified interface.

31 lines (30 loc) 1.36 kB
'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'; }