It works like a boilerplate package, which assist developer to just use the function and integrate their contracts at ease.
Install react-solidity-web3 with npm
npm install react-solidity-web3
const { connectWallet,createWeb3Provider,createContractInstance, executeTransaction,queryData, queryEvents } = require('react-solidity-web3');
var connectOptions = {
rpcObj: {
50: "https://rpc.xinfin.network",
51: "https://rpc.apothem.network"
},
network: "mainnet",
toDisableInjectedProvider: true
}
const instance = await connectWallet(connectOptions);
const {provider,signer} = await createWeb3Provider(instance);
const sample = await createContractInstance(address, abi, provider);
Consider you have 3 parameters to pass in registerFlights function in the smart contract, then
let _flightAddress = "0xA9e6835929f32DD440290b4c81466ff554b82667";
let _careerFlightNo = "ING695";
let _serviceProviderName = "Indigo Airlines";
let response1 = await executeTransaction(sample, provider, 'registerFlights', [_flightAddress, _careerFlightNo, _serviceProviderName]);
Consider you have 2 parameters to pass in flights(mapping variable) in the smart contract to read
let _flightId = "1";
let _flightAddress = "0xA9e6835929f32DD440290b4c81466ff554b82667";
let response1 = await queryData(sample, provider, 'flights', [_flightId, _flightAddress]);
let response1 = await queryData(sample, provider, 'readAllFlight', []);
let response1 = await queryData(sample, provider, 'claims', ["asdgasdgsgsd"]);
let returnvalue = await queryEvents(sample, provider, "InsuranceEvents", response1.blockNumber);
Parms | Descriptions |
---|---|
connectOptions | Object contains rpcObj, network & toDisableInjectedProvider Parms |
rpcObj | by default it overrides Xinfin Mainnet & Apothem, if you want to override your evem compatible RPC, override it with ChainID:rpc url |
network | default value mainnet, you can override to Apothem, Rinkeby etc |
toDisableInjectedProvider | default value true, set to false if you want Metamask to be shown |
Functions | Descriptions |
---|---|
executeTransaction | It calls the send Transaction and writes the data onto Blockchain |
queryData | It queries the data from Blockchain for a given function, you can read mapping variable, view function, public variable using this function |
queryEvents | It enables you to read event details by passing block Number |
createWeb3Provider | It connects with web3 with chosen wallet and results provider & signer details |
connectWallet | It enables you to connect with your wallet (metamask, XDCPay, Torus, WalletConnect) |
createContractInstance | It enables you to create a instance for your contract |
EthereumContext | it enables you to setup in main app.js file and Read thoes in other components |
showToasts | it enables you to show toast msg after successful execution |
showError | It enables you to show error message when there is a failure |
log | it enables you to print detailed log by passing three parms |
convertPriceToEth | It enables you to convert price to Wei |
convertPricefromEth | It enables you to convert wei to actual price |
upload | It enables you to upload image to IPFS |
checkCurrencyBalanceForUser | It enables to fetch balance for user |
getTransactionReceiptMined | IN PROGRESS |
MetaTxn | IN PROGRESS |
let response1 = await executeTransaction(sample, provider, 'registerFlights', [_flightAddress, _careerFlightNo, _serviceProviderName]);
Functions | Params |
---|---|
executeTransaction | It calls the send Transaction and writes the data onto Blockchain |
queryData | It queries the data from Blockchain for a given function, you can read mapping variable, view function, public variable using this function |
queryEvents | It enables you to read event details by passing block Number |
createWeb3Provider | It connects with web3 with chosen wallet and results provider & signer details |
let response1 = await executeTransaction(contractInstance, provider, "functionName", [parm1, Parm2...]);
Functions | Params |
---|---|
contractInstance | Contract that you want to interact with |
provider | web3 provider |
functionName | Function you want to interact with |
Parm1, Parm2 | List of params that function should expect, leave this array empty if no params required to pass |
let response1 = await queryData(contractInstance, provider, "functionName", [parm1, Parm2...]);
Functions | Params |
---|---|
contractInstance | Contract that you want to interact with |
provider | web3 provider |
functionName | Function you want to interact with |
Parm1, Parm2 | List of params that function should expect, leave this array empty if no params required to pass |
let response1 = await queryEvents(contractInstance, provider, eventName,blockNumber);
Functions | Params |
---|---|
contractInstance | Contract that you want to interact with |
provider | web3 provider |
eventName | Event you want to access |
blockNumber | BlockNumber(latest) |
var connectOptions = {
rpcObj: {
50: "https://rpc.xinfin.network",
51: "https://rpc.apothem.network"
},
network: "mainnet",
toDisableInjectedProvider: true
}
const walletinstance = await connectWallet(connectOptions);
Functions | Params |
---|---|
connectOptions | Object to override the rpcObj, network & metamask injection |
const {provider,signer} = await createWeb3Provider(walletinstance);
Functions | Params |
---|---|
walletinstance | Result of connectWallet should be passed as input here |
const contractInstance = await createContractInstance(contractAddress, abi, provider);
Functions | Params |
---|---|
contractAddress | your smart contract address |
abi | Abi of your smart contract |
provider | Provider you obtained from createWeb3Provider |
const projectId = "<YOUR PROJECT ID>";
const projectSecret = "<YOUR PROJECT SECRET>";
const authorization = "Basic " + btoa(projectId + ":" + projectSecret);
const file = files[0];
const result = await upload({file,from,authorization});
Functions | Params |
---|---|
file | file you want to upload to IPFS |
from | wallet addresss who is uploading this file |
authorization | authorization is required now to upload a file in IPFS. Projectid & Secret, you can get from your IPFS Infura account |
More detailed information for other functions will be updated soon..