2.0.0-prerelease.10 • Published 9 months ago

web3-wallets-sl v2.0.0-prerelease.10

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

Library for different Web3 wallets used within the Splinterverse

import { EVMm, Keychain } from 'splinterlands-web3-wallets'

const main = async () => {
    const keychain = new Keychain();

    /**
     * Initially keychain.state is 'none'
     * You can either run the function below manually (make sure extension has be loaded within the website, could take a second or so)
     * Or it will be run when you run keychain.call, keychain.requestSignBuffer, etc.
     *
     * Explanation:
     * none => not installed
     * installed => installed but not enabled
     * enabled => ready to go
     */
    await keychain.getState();

    const result = await keychain.requestSign({
        // address: 'wolf', // optional - if not set, user can choose
        role: 'Posting',
        message: 'Super secret message',
        title: 'Please sign this message so we can authenticate your account',
    });

    if (result.status === 'cancel') {
        console.log('User cancelled the request. You can ignore this and just start over.');
        return;
    } else if (result.status === 'error') {
        console.log('There was an error');
        if (result.state === 'none') {
            console.log(`User has not installed Keychain or hasn't used it before.`);
        } else if (result.state === 'installed') {
            console.log(`User has installed Keychain and used it before, but it seems to be disabled for this website. Remind user to enable again.`);
        } else {
            console.log(`Message: ${result.message}`, result.data);
        }
        return;
    } else {
        console.log('Success!', result.data);
    }

    const evm = new EVM();
    const result2 = await evm.requestAddress();
    if (result2.status === 'cancel') {
        console.log('User cancelled the request. You can ignore this and just start over.');
    } else if (result2.status === 'error') {
        if (result2.state === 'none') {
            console.log(`User has not installed EVM Wallet or hasn't used it before.`);
        } else if (result2.state === 'installed') {
            console.log(`User has installed EVM Wallet and used it before, but it seems to be disabled for this website. Remind user to enable again.`);
        }
    } else {
        console.log('Success!', result.data);
    }
}

main()