@samudai_xyz/web3-sdk
Version:
## All in one web3 integrations for Samudai
52 lines (51 loc) • 1.84 kB
JavaScript
import { SiweMessage, generateNonce } from 'siwe';
export class Siwe {
constructor(provider) {
this.createMessage = async (address, statement, domain) => {
try {
const nonce = generateNonce();
const validFor = 24 * 60 * 60 * 1000;
const expirationDate = new Date(Date.now() + validFor).toISOString();
const message = new SiweMessage({
domain: domain,
address: address,
uri: origin,
version: '1.0.0',
chainId: 1,
statement: statement,
nonce: nonce,
expirationTime: expirationDate,
});
return message.prepareMessage();
}
catch (err) {
console.log(err);
return `Error: ${err}`;
}
};
this.walletSignIn = async (domain) => {
try {
const signer = this.provider.getSigner();
const address = await signer.getAddress();
const message = await this.createMessage(address, 'Samudai DAO Dashboard Sign In Request', domain);
const signature = await signer.signMessage(message);
return {
message: message,
signature: signature,
error: null,
};
}
catch (err) {
return {
message: '',
signature: '',
error: {
message: 'Error while signing message',
error: `Error: ${err}`,
},
};
}
};
this.provider = provider;
}
}