UNPKG

@dumbdevs/scaffold-move

Version:

Scaffold generator for Movement Labs DApps in TypeScript

132 lines (130 loc) 4.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable @typescript-eslint/ban-ts-comment */ const logo_png_1 = __importDefault(require("./assets/logo.png")); require("./App.css"); const razorkit_1 = require("@razorlabs/razorkit"); function App() { const wallet = (0, razorkit_1.useWallet)(); const { balance } = (0, razorkit_1.useAccountBalance)(); function uint8arrayToHex(value) { if (!value) return ''; // @ts-ignore return value.toString('hex'); } async function handleSignMsg() { if (!wallet.account) return; try { const msg = 'Hello world!'; const result = await wallet.signMessage({ message: msg, nonce: '0', }); console.log('verify signedMessage', result); if (!result.status) { alert(`signMessage succeed, but verify signedMessage failed`); } else { alert(`signMessage succeed, and verify signedMessage succeed!`); } } catch (e) { console.error('signMessage failed', e); alert('signMessage failed (see response in the console)'); } } async function handleSignTransaction() { if (!wallet.account) return; try { const recipient = '0xfaded96b72a03b2ed9e2b2dc0bef0642d63e07fd7b1eeeac047188eb1ef34dd6'; const payload = { function: '0x1::aptos_account::transfer', functionArguments: [recipient, 100000000], typeArguments: [], }; const result = await wallet.signAndSubmitTransaction({ payload: payload }); if (result.status === 'Approved') { alert(`signTransaction succeed, hash: ${result.args.hash}`); } else { alert('signTransaction failed'); } } catch (e) { console.error('signTransaction failed', e); } } const getWalletStatus = () => { if (wallet.connecting) return 'connecting'; return wallet.connected ? 'connected' : 'disconnected'; }; return (<div className="App"> <div> <a href="https://vitejs.dev" target="_blank"> <img src="/vite.svg" className="logo" alt="Vite logo"/> </a> <a href="https://github.com/razorlabsorg/razorkit" target="_blank"> <img src={logo_png_1.default} className="logo" alt="Razor logo"/> </a> </div> <h1>Vite + Razor Kit</h1> <div className="card"> <razorkit_1.ConnectButton style={{ marginTop: '16px', background: 'linear-gradient(180deg, #FFD800 0%, #FDAB32 100%)', }} onConnectSuccess={(name) => { console.log('connect success: ', name); }} onConnectError={(err) => { //@ts-ignore if (err.code === razorkit_1.ErrorCode.WALLET__CONNECT_ERROR__USER_REJECTED) { console.warn('user rejected the connection to ' + err.details?.wallet); } else { console.warn('unknown connect error: ', err); } }} onDisconnectSuccess={(name) => { console.log('disconnect success: ', name); }} onDisconnectError={(err) => { console.log('disconnect error: ', err); }}/> {!wallet.connected ? (<p>Connect DApp with Razor wallet from now!</p>) : (<div> <div> <p>current wallet: {wallet.adapter?.name}</p> <p>wallet status: {getWalletStatus()}</p> <p>wallet address: {wallet.account?.address}</p> <p>current network: {wallet.chain?.name}</p> <p> wallet balance:{' '} {(0, razorkit_1.formatCurrency)(balance ?? 0, { withAbbr: false, decimals: 8, })}{' '} MOVE </p> <p> wallet publicKey: {uint8arrayToHex(wallet.account?.publicKey)} </p> </div> <div className={'btn-group'} style={{ margin: '8px 0' }}> <button onClick={handleSignMsg}>signMessage</button> </div> <div className={'btn-group'} style={{ margin: '8px 0' }}> <button onClick={handleSignTransaction}>signTransaction</button> </div> </div>)} </div> <p className="read-the-docs"> Click on the Vite and Razor logos to learn more </p> </div>); } exports.default = App;