@cosmos-kit/react-lite
Version:
cosmos-kit wallet connector
68 lines (67 loc) • 3.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ChainProvider = exports.walletContext = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const core_1 = require("@cosmos-kit/core");
const react_1 = require("react");
exports.walletContext = (0, react_1.createContext)(null);
function ChainProvider({ chains, assetLists, wallets, walletModal: ProvidedWalletModal, throwErrors = false, subscribeConnectEvents = true, defaultNameService = 'icns', walletConnectOptions, signerOptions, endpointOptions, sessionOptions, logLevel = 'WARN', allowedIframeParentOrigins, children, }) {
const logger = (0, react_1.useMemo)(() => new core_1.Logger(logLevel), []);
const [isViewOpen, setViewOpen] = (0, react_1.useState)(false);
const [viewWalletRepo, setViewWalletRepo] = (0, react_1.useState)();
const [data, setData] = (0, react_1.useState)();
const [state, setState] = (0, react_1.useState)(core_1.State.Init);
const [msg, setMsg] = (0, react_1.useState)();
const [, setClientState] = (0, react_1.useState)(core_1.State.Init);
const [, setClientMsg] = (0, react_1.useState)();
const [render, forceRender] = (0, react_1.useState)(0);
logger.debug('[provider.tsx] data:', data);
logger.debug('[provider.tsx] state:', state);
logger.debug('[provider.tsx] message:', msg);
const [walletManager, setWalletManager] = (0, react_1.useState)();
(0, react_1.useEffect)(() => {
const walletManager = new core_1.WalletManager(chains, wallets, logger, throwErrors, subscribeConnectEvents, allowedIframeParentOrigins, assetLists, defaultNameService, walletConnectOptions, signerOptions, endpointOptions, sessionOptions);
walletManager.setActions({
viewOpen: setViewOpen,
viewWalletRepo: setViewWalletRepo,
data: setData,
state: setState,
message: setMsg,
});
walletManager.walletRepos.forEach((wr) => {
wr.setActions({
viewOpen: setViewOpen,
viewWalletRepo: setViewWalletRepo,
render: forceRender,
});
wr.wallets.forEach((w) => {
w.setActions({
data: setData,
state: setState,
message: setMsg,
});
});
});
walletManager.mainWallets.forEach((w) => {
w.setActions({
data: setData,
state: setState,
message: setMsg,
clientState: setClientState,
clientMessage: setClientMsg,
});
});
setWalletManager(walletManager);
}, []);
(0, react_1.useEffect)(() => {
walletManager?.onMounted();
return () => {
setViewOpen(false);
walletManager?.onUnmounted();
};
}, [render, walletManager]);
if (!walletManager)
return null;
return ((0, jsx_runtime_1.jsxs)(exports.walletContext.Provider, { value: { walletManager, modalProvided: Boolean(ProvidedWalletModal) }, children: [ProvidedWalletModal && ((0, jsx_runtime_1.jsx)(ProvidedWalletModal, { isOpen: isViewOpen, setOpen: setViewOpen, walletRepo: viewWalletRepo })), children] }));
}
exports.ChainProvider = ChainProvider;