1.2.0 • Published 2 years ago

@tacans/concordium-wallet-client v1.2.0

Weekly downloads
-
License
ISC
Repository
gitlab
Last release
2 years ago

ConcordiumWalletClient

A JavaScript library to use with CryproX Wallet.

How to use

const concordiumWalletClient = new ConcordiumWalletClient({
    bridgeHost: 'bridge.example.cloud',
    bridgeConnectionKey: '82ac31f81'
});

const transactionPayload = utils.interpolate(config, {
    contract_address: {
        index: '253',
        sub_index: 0
    }
});

concordiumWalletClient.connect();

concordiumWalletClient.on('connect', () => {
    concordiumWalletClient.send('Transaction', {
        from: '0x1111111111111111111111111',
        amount: '10000000000', // Nanoprice, equal to 10 CCD
        to: '0x2222222222222222222222222'
    });

    concordiumWalletClient.disconnect();
});

concordiumWalletClient.on('accept', () => {
    concordiumWalletClient.send('Transaction', transactionPayload);
});

concordiumWalletClient.on('accountInfo', (message) => {
	console.log('Wallet balance: ', message.balance);
});

concordiumWalletClient.on('transfer', (message) => {
    if (message.tx_status === 'Accepted') {
        console.log(message.tx_hash);
    }

    concordiumWalletClient.disconnect();
});

concordiumWalletClient.on('error', async (message) => {
    await concordiumWalletClient.disconnect();

    throw new Error(`WS.bridge.error ${JSON.stringify(message)}`);
});

concordiumWalletClient.on('reject', () => {
    console.error('Request was rejected');

    concordiumWalletClient.disconnect();
});

QR Modal usage

class ModalAdapter {
    constructor(opts) {
        this.pubSub = TypedEventEmitter;
        this.pubSub.on('close', () => {
            this.close();
            opts.onClose();
        });
    }

    close () {
        const wrapper = document.getElementById('qr-modal');

        if (wrapper) {
            document.body.removeChild(wrapper);
        }
    }

    open(msg) {
        const wrapper = document.createElement('div');
        wrapper.setAttribute('id', 'qr-modal');

        document.body.appendChild(wrapper);

        ReactDOM.render(
            <div className="modal">
                <button onClick={() => this.pubSub.emit('close')}>Close</button>
                {isMobile ? (
                    <a href={`tcwb://ws?uri=${msg.connect_string}`}>Wallet connect</a>
                 ) : (
                     <QRCode value={msg.connect_string} />
                 )}
            </div>
        );
    }
}

const concordiumWalletClient = new ConcordiumWalletClient({
    bridgeHost: 'bridge.example.cloud',
    bridgeConnectionKey: '82ac31f81',
    qrModal: ModalAdapter
});

concordiumWalletClient.connect(); // opens QR code (deep link) modal

Utils API

NameArgsDescription
removeHexLiteralvalue: string (optional)Removes a leading 0x HEX literal from the string (default: '')
toUint32value: string (optional)Converts a number represented by a string to Uint32 (little endian) (default: '')
toUint64value: string (optional)Converts a number represented by a string to Uint64 (little endian) (default: '')
base58ToHexvalue: string (optional)Converts a base58 encoded string to HEX without leading 0x literal (default: '')

ConcordiumQrModalAdapter

NameArgsDescription
ConcordiumQrModalAdapteropts: IConcordiumWalletQrModalOptions (required)Constructor
openmsg: IBridgeMessage (optional)Opens a modal with QR code.
close-Closes the modal

Events

EventPayloadDescription
connect-When user has scanned QR Code with wallet app
accept{ data: 'ConnectionAcceptedNotification' \| '' }When user has accepted wallet connection
accountInfo{ data: { address: string, balance: string }When user has connected the wallet
transfer{ data: { tx_hash: string, tx_status: 'Accepted' \| 'Rejected' }When user transfers NFT ownership to another wallet
transactiondata: { tx_hash: string; tx_status: 'Accepted' \| 'Rejected' }When user did a transaction (mint, burn, etc.)
error{ message: any }When any error has occured
reject-When user has rejected operation in wallet
1.2.0

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

3 years ago

1.0.8

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago