refactor: simplify eth_sendTransaction
for ethers example
This commit is contained in:
parent
e58caef755
commit
558efc8d27
@ -27,7 +27,7 @@ import {
|
|||||||
SToggleContainer,
|
SToggleContainer,
|
||||||
} from "./components/app";
|
} from "./components/app";
|
||||||
import { useWalletConnectClient } from "./contexts/ClientContext";
|
import { useWalletConnectClient } from "./contexts/ClientContext";
|
||||||
import { utils } from "ethers";
|
import { BigNumber, utils } from "ethers";
|
||||||
|
|
||||||
interface IFormattedRpcResponse {
|
interface IFormattedRpcResponse {
|
||||||
method: string;
|
method: string;
|
||||||
@ -89,6 +89,36 @@ export default function App() {
|
|||||||
await ping();
|
await ping();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const testSendTransaction: () => Promise<IFormattedRpcResponse> = async () => {
|
||||||
|
if (!web3Provider) {
|
||||||
|
throw new Error("web3Provider not connected");
|
||||||
|
}
|
||||||
|
|
||||||
|
const { chainId } = await web3Provider.getNetwork();
|
||||||
|
const [address] = await web3Provider.listAccounts();
|
||||||
|
const balance = await web3Provider.getBalance(address);
|
||||||
|
|
||||||
|
const tx = await formatTestTransaction("eip155:" + chainId + ":" + address);
|
||||||
|
|
||||||
|
if (balance.lt(BigNumber.from(tx.gasPrice).mul(tx.gasLimit))) {
|
||||||
|
return {
|
||||||
|
method: "eth_sendTransaction",
|
||||||
|
address,
|
||||||
|
valid: false,
|
||||||
|
result: "Insufficient funds for intrinsic transaction cost",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const txHash = await web3Provider.send("eth_sendTransaction", [tx]);
|
||||||
|
|
||||||
|
return {
|
||||||
|
method: "eth_sendTransaction",
|
||||||
|
address,
|
||||||
|
valid: true,
|
||||||
|
result: txHash,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
const testSignTransaction: () => Promise<IFormattedRpcResponse> = async () => {
|
const testSignTransaction: () => Promise<IFormattedRpcResponse> = async () => {
|
||||||
if (!web3Provider) {
|
if (!web3Provider) {
|
||||||
throw new Error("web3Provider not connected");
|
throw new Error("web3Provider not connected");
|
||||||
@ -214,7 +244,7 @@ export default function App() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return [
|
return [
|
||||||
// { method: "eth_sendTransaction", callback: onSendTransaction },
|
{ method: "eth_sendTransaction", callback: wrapRpcRequest(testSendTransaction) },
|
||||||
{ method: "eth_signTransaction", callback: wrapRpcRequest(testSignTransaction) },
|
{ method: "eth_signTransaction", callback: wrapRpcRequest(testSignTransaction) },
|
||||||
{ method: "personal_sign", callback: wrapRpcRequest(testSignMessage) },
|
{ method: "personal_sign", callback: wrapRpcRequest(testSignMessage) },
|
||||||
{ method: "eth_sign (standard)", callback: wrapRpcRequest(testEthSign) },
|
{ method: "eth_sign (standard)", callback: wrapRpcRequest(testEthSign) },
|
||||||
|
Loading…
Reference in New Issue
Block a user