This is a Next.js project bootstrapped with create-next-app
.
-
Install MyDogeMask from the chrome store or from source.
-
Run the development server:
yarn dev
-
Open http://localhost:3000 with your browser to run the demo.
let myDogeMask = null;
// Listen to the window event which ensures the extension script is injected
window.addEventListener(
'doge#initialized',
() => {
myDogeMask = (window as any).doge;
},
{ once: true }
);
// Check the extension interface is set and is MyDogeMask
if (myDogeMask?.isMyDogeMask) {
try {
// Each api request supports both promise and callback patterns
// Connect to your website
// Generates a popup to be confirmed by the user
// Promise will reject or onError will be called if canceled
const connectRes = await myDogeMask.connect(/*onSuccess, onError*/);
console.log('connect result', connectRes);
/*{
"approved": true,
"address": "DBKwBLEDY96jBtx1xCmjfBzp9FrNCWxnmM",
"balance": "4206912345678"
}*/
// Request connected address balance
const balanceRes = await myDogeMask.getBalance(/*onSuccess, onError*/);
console.log('balance result', balanceRes);
// { "address": "DBKwBLEDY96jBtx1xCmjfBzp9FrNCWxnmM", "balance": "4206912345678" }
// Send a transaction
// Generates a popup to be confirmed by the user
// Promise will reject or onError will be called if canceled
const txReqRes = await myDogeMask.requestTransaction(
{
recipientAddress: 'DAHkCF5LajV6jYyi5o4eMvtpqXRcm9eZYq',
dogeAmount: 4.2,
}
// onSuccess,
// onError
);
console.log('request transaction result', txReqRes);
// { "txId": "b9fc04f226b194684fe24c786be89cae26abf8fcebbf90ff7049d5bc7fa003f0" }
// Poll to get the transaction status
setInterval(async () => {
const txStatusRes = await myDogeMask.getTransactionStatus({
txId: txReqRes.txId,
});
console.log('transaction status result', txStatusRes);
/*{
"txId": "b9fc04f226b194684fe24c786be89cae26abf8fcebbf90ff7049d5bc7fa003f0",
"confirmations": 0,
"dogeAmount": "420000000",
"blockTime": 1675217503,
"status": "pending"
}*/
}, 10000);
// Poll to check if the user has disconnected from the extension
// Promise will reject or onError will be called if the wallet is disconnected
setInterval(async () => {
const connectionStatusRes = await myDogeMask
.getConnectionStatus(/*onSuccess, onError*/)
.catch(console.error);
console.log('connection status result', connectionStatusRes);
// { "connected": true, "address": "DBKwBLEDY96jBtx1xCmjfBzp9FrNCWxnmM" }
if (!connectionStatusRes?.connected) {
console.log('disconnected')
}
}, 10000);
// Disconnect the connected address manually
const disconnectRes = await myDogeMask.disconnect(/*onSuccess, onError*/);
console.log('disconnect result', disconnectRes);
// { "disconnected": true }
} catch (e) {
console.error(e);
}
}