Skip to content

Instantly share code, notes, and snippets.

@ryanswrt
Created July 25, 2019 04:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ryanswrt/931a58a41cad79ed8b341fca8d9e46ac to your computer and use it in GitHub Desktop.
Save ryanswrt/931a58a41cad79ed8b341fca8d9e46ac to your computer and use it in GitHub Desktop.
import React, {useCallback, useState} from "react";
import { useWavelet, useAccount, useContract } from 'react-use-wavelet';
import { Wavelet } from 'wavelet-client';
import JSBI from "jsbi";
const BigInt = JSBI.BigInt;
const MyAccount = () => {
// First get a working client
const [client, node, clientErr] = useWavelet('https://testnet.perlin.net');
// To get a Wavelet Account
const [account, accountErr] = useAccount(client, 'yourprivatekey');
const [chatLogs, setChatLogs] = useState([]);
// callback to set chat logs to results of contract 'get_messages' function
const loadLogs = useCallback((contract) => {
const wallet = Wavelet.loadWalletFromPrivateKey('yourprivatekey');
setChatLogs(contract.test(wallet, 'get_messages', BigInt(0)).logs);
}, []);
// load logs every time wavelet reaches consensus;
const onUpdate = loadLogs;
// load logs after contract loads
const onLoad = loadLogs;
// To get a Wavelet Contract, and register callbacks
const [contract] = useContract(client, 'contract addr', onUpdate, onLoad);
// To call a contract function
const sendMessage = (message) => {
const wallet = Wavelet.loadWalletFromPrivateKey('yourprivatekey');
contract.call(wallet, 'send_message', BigInt(0), BigInt(250000), BigInt(0), {
type: 'string',
value: message
});
}
return (
<div>
Balance: {account ? account.balance : 'account not loaded'}
Public Key: {account ? account.pulic_key : 'account not loaded'}
<button onClick={() => sendMessage('Yo')} />
<textarea
rows={35}
readOnly
value={chatLogs.length === 1 ? chatLogs[0] : ''}
/>
</div>
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment