feat: adds provider handler for eth_signTypedData
This commit is contained in:
parent
35868ea7af
commit
b225f4e215
@ -8,7 +8,12 @@ import Column from "./components/Column";
|
|||||||
import Header from "./components/Header";
|
import Header from "./components/Header";
|
||||||
import Modal from "./components/Modal";
|
import Modal from "./components/Modal";
|
||||||
import { DEFAULT_MAIN_CHAINS, DEFAULT_TEST_CHAINS } from "./constants";
|
import { DEFAULT_MAIN_CHAINS, DEFAULT_TEST_CHAINS } from "./constants";
|
||||||
import { AccountAction, getLocalStorageTestnetFlag, setLocaleStorageTestnetFlag } from "./helpers";
|
import {
|
||||||
|
AccountAction,
|
||||||
|
eip712,
|
||||||
|
getLocalStorageTestnetFlag,
|
||||||
|
setLocaleStorageTestnetFlag,
|
||||||
|
} from "./helpers";
|
||||||
import Toggle from "./components/Toggle";
|
import Toggle from "./components/Toggle";
|
||||||
import RequestModal from "./modals/RequestModal";
|
import RequestModal from "./modals/RequestModal";
|
||||||
import PairingModal from "./modals/PairingModal";
|
import PairingModal from "./modals/PairingModal";
|
||||||
@ -90,15 +95,36 @@ export default function App() {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const testSignTypedData: () => Promise<IFormattedRpcResponse> = async () => {
|
||||||
|
if (!web3Provider) {
|
||||||
|
throw new Error("web3Provider not connected");
|
||||||
|
}
|
||||||
|
const message = JSON.stringify(eip712.example);
|
||||||
|
|
||||||
|
const address = accounts[0];
|
||||||
|
|
||||||
|
// eth_signTypedData params
|
||||||
|
const params = [address, message];
|
||||||
|
|
||||||
|
// send message
|
||||||
|
const signature = await web3Provider.send("eth_signTypedData", params);
|
||||||
|
return {
|
||||||
|
method: "eth_signTypedData",
|
||||||
|
address,
|
||||||
|
valid: true,
|
||||||
|
result: signature,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
const getEthereumActions = (): AccountAction[] => {
|
const getEthereumActions = (): AccountAction[] => {
|
||||||
const onSignPersonalMessage = async () => {
|
const wrapRpcRequest = (rpcRequest: () => Promise<IFormattedRpcResponse>) => async () => {
|
||||||
openRequestModal();
|
openRequestModal();
|
||||||
try {
|
try {
|
||||||
setIsRpcRequestPending(true);
|
setIsRpcRequestPending(true);
|
||||||
const result = await testSignMessage();
|
const result = await rpcRequest();
|
||||||
setRpcResult(result);
|
setRpcResult(result);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error("RPC request failed:", error);
|
||||||
} finally {
|
} finally {
|
||||||
setIsRpcRequestPending(false);
|
setIsRpcRequestPending(false);
|
||||||
}
|
}
|
||||||
@ -106,8 +132,8 @@ export default function App() {
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
// { method: "eth_sendTransaction", callback: onSendTransaction },
|
// { method: "eth_sendTransaction", callback: onSendTransaction },
|
||||||
{ method: "personal_sign", callback: onSignPersonalMessage },
|
{ method: "personal_sign", callback: wrapRpcRequest(testSignMessage) },
|
||||||
// { method: "eth_signTypedData", callback: onSignTypedData },
|
{ method: "eth_signTypedData", callback: wrapRpcRequest(testSignTypedData) },
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user