UNPKG

@suiware/kit

Version:

Opinionated React components and hooks for building Sui dApps.

81 lines (76 loc) 2.4 kB
'use strict'; var themes = require('@radix-ui/themes'); var dappKit = require('@mysten/dapp-kit'); var react = require('react'); var jsxRuntime = require('react/jsx-runtime'); // src/components/NetworkType.tsx // src/helpers/formatNetworkType.ts var formatNetworkType = (machineName) => { if (machineName.startsWith("sui:")) { return machineName.substring(4); } return machineName; }; // src/hooks/useNetworkType.tsx var DEFAULT_REFETCH_INTERVAL = 3e3; var useNetworkType = ({ autoSync, autoSyncInterval } = {}) => { const wallet = dappKit.useCurrentWallet(); const ctx = dappKit.useSuiClientContext(); const [networkType, setNetworkType] = react.useState(void 0); const synchronizeNetworkType = (wallet2, ctx2) => { var _a, _b, _c; if (!wallet2.isConnected) { setNetworkType(void 0); return; } const newNetwork = formatNetworkType( (_c = (_b = (_a = wallet2.currentWallet) == null ? void 0 : _a.accounts) == null ? void 0 : _b[0].chains) == null ? void 0 : _c[0] ); setNetworkType(newNetwork); if (newNetwork != null) { ctx2.selectNetwork(newNetwork); } }; react.useEffect(() => { synchronizeNetworkType(wallet, ctx); if (autoSync == null || autoSync === false) { return; } const interval = setInterval( () => { if (!wallet.isConnected || !autoSync) { setNetworkType(void 0); clearInterval(interval); return; } synchronizeNetworkType(wallet, ctx); }, autoSync && autoSyncInterval != null ? autoSyncInterval : DEFAULT_REFETCH_INTERVAL ); return () => { clearTimeout(interval); }; }, [autoSync, autoSyncInterval, wallet, ctx]); return { networkType, synchronize: () => synchronizeNetworkType(wallet, ctx) }; }; var useNetworkType_default = useNetworkType; var NetworkType = () => { const { networkType } = useNetworkType_default({ autoSync: true }); let color = "amber"; if (networkType == null) { color = "tomato"; } else if (networkType === "mainnet") { color = "green"; } return /* @__PURE__ */ jsxRuntime.jsx(themes.Badge, { color, className: "sk-network-badge", children: networkType || "disconnected" }); }; var NetworkType_default = NetworkType; module.exports = NetworkType_default; //# sourceMappingURL=NetworkType.js.map //# sourceMappingURL=NetworkType.js.map