UNPKG

@suiware/kit

Version:

Opinionated React components and hooks for building Sui dApps.

108 lines (104 loc) 3.07 kB
'use strict'; var themes = require('@radix-ui/themes'); var lucideReact = require('lucide-react'); var dappKit = require('@mysten/dapp-kit'); var utils = require('@mysten/sui/utils'); var faucet = require('@mysten/sui/faucet'); var jsxRuntime = require('react/jsx-runtime'); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; var fundAddress = (address, network) => __async(null, null, function* () { return yield faucet.requestSuiFromFaucetV2({ host: faucet.getFaucetHost(network), recipient: address }); }); var getTestnetFaucetLink = (address) => { return `https://faucet.sui.io/?address=${address}`; }; // src/hooks/useFaucet.tsx var useFaucet = ({ onError, onSuccess }) => { const ctx = dappKit.useSuiClientContext(); const currentAccount = dappKit.useCurrentAccount(); const fund = (address) => __async(null, null, function* () { if (!["localnet", "devnet", "testnet"].includes(ctx.network)) { onError != null && onError(null, `The ${ctx.network} network does not have a faucet`); return; } const fundedAddress = address == null ? currentAccount == null ? void 0 : currentAccount.address : void 0; if (fundedAddress == null) { onError != null && onError(null, "Please connect your wallet first"); return; } if (ctx.network === "testnet") { window.open(getTestnetFaucetLink(fundedAddress), "_blank"); return; } try { const { status } = yield fundAddress( fundedAddress, ctx.network ); if (status !== "Success") { onError != null && onError( new Error(status.Failure.internal), "Cannot fund the address on this network at the moment" ); } } catch (e) { onError != null && onError(e, "Cannot fund the address"); return; } onSuccess != null && onSuccess( `The ${utils.formatAddress(fundedAddress)} address has been funded successfully` ); }); return { fund }; }; var useFaucet_default = useFaucet; var Faucet = (props) => { const { onError, onSuccess } = props; const { fund } = useFaucet_default({ onError, onSuccess }); return /* @__PURE__ */ jsxRuntime.jsxs( themes.Button, { variant: "surface", className: "sk-faucet-button", onClick: () => fund(), children: [ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.HandCoinsIcon, {}), "Faucet" ] } ); }; var Faucet_default = Faucet; module.exports = Faucet_default; //# sourceMappingURL=Faucet.js.map //# sourceMappingURL=Faucet.js.map