mirror of
https://github.com/status-im/nft-faucet.git
synced 2025-02-24 04:28:29 +00:00
56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
async function metamaskRequest(parsedMessage) {
|
|
try {
|
|
const response = await ethereum.request(parsedMessage);
|
|
let rpcResponse = {
|
|
jsonrpc: "2.0",
|
|
result: response,
|
|
id: parsedMessage.id,
|
|
error: null
|
|
}
|
|
|
|
return rpcResponse;
|
|
} catch (e) {
|
|
console.log(e);
|
|
let rpcResonseError = {
|
|
jsonrpc: "2.0",
|
|
id: parsedMessage.id,
|
|
error: e
|
|
}
|
|
return rpcResonseError;
|
|
}
|
|
}
|
|
|
|
async function getSelectedAddress() {
|
|
let accountsReponse = await getAddresses();
|
|
if (accountsReponse.error !== null) throw accountsReponse.error;
|
|
return accountsReponse.result[0];
|
|
}
|
|
|
|
async function getAddresses() {
|
|
return await metamaskRequest({ method: 'eth_requestAccounts' });
|
|
}
|
|
|
|
window.NethereumMetamaskInterop = {
|
|
Sign: async (utf8HexMsg) => {
|
|
try {
|
|
const from = await getSelectedAddress();
|
|
const params = [utf8HexMsg, from];
|
|
const method = 'personal_sign';
|
|
const rpcResponse = await metamaskRequest({
|
|
method,
|
|
params,
|
|
from
|
|
});
|
|
return JSON.stringify(rpcResponse);
|
|
} catch (e) {
|
|
console.log(e);
|
|
let rpcResponseError = {
|
|
jsonrpc: "2.0",
|
|
id: parsedMessage.id,
|
|
error: e
|
|
}
|
|
return JSON.stringify(rpcResponseError);
|
|
}
|
|
}
|
|
}
|