@dumbdevs/scaffold-move
Version:
Scaffold generator for Movement Labs DApps in TypeScript
132 lines (130 loc) • 4.88 kB
JavaScript
;
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;