@broxus/tvm-connect
Version:
TypeScript SDK for connecting to Nekoton-compatible wallets using a unified interface.
35 lines (34 loc) • 1.53 kB
JavaScript
'use client';
import * as React from 'react';
import { TvmConnectDialog } from '../components';
import { useSharedParams } from '../context/SharedParamsContext';
import { useTvmConnectService } from '../context/TvmConnectServiceContext';
import { useContext } from '../hooks';
import { TvmConnectDialogStore } from '../stores';
export const TvmConnectDialogStoreContext = React.createContext(null);
export function useTvmConnectDialog() {
return useContext(TvmConnectDialogStoreContext);
}
export function TvmConnectDialogStoreProvider({ agreementsNote, children, className, popupType, qrEnabled, recentMetaStorageKey, }) {
const service = useTvmConnectService();
const params = useSharedParams();
const context = React.useMemo(() => new TvmConnectDialogStore(service, {
popupType: popupType ?? params.popupType,
qrEnabled: qrEnabled ?? params.qrEnabled,
recentMetaStorageKey: recentMetaStorageKey ?? params.recentMetaStorageKey,
}), [
params.popupType,
params.qrEnabled,
params.recentMetaStorageKey,
popupType,
qrEnabled,
recentMetaStorageKey,
service,
]);
return (React.createElement(TvmConnectDialogStoreContext.Provider, { value: context },
children,
React.createElement(TvmConnectDialog, { agreementsNote: agreementsNote, className: className, onClose: context.close })));
}
if (process.env.NODE_ENV !== 'production') {
TvmConnectDialogStoreContext.displayName = 'TvmConnectModalStoreContext';
}