38 lines
1.1 KiB
JavaScript

function serializeFormData(formElement) {
const formData = new FormData(formElement);
const formJSON = {};
formData.forEach((value, key) => {
// Handle multiple values for the same key (e.g., checkboxes)
if (formJSON.hasOwnProperty(key)) {
formJSON[key] = [].concat(formJSON[key], value);
} else {
formJSON[key] = value;
}
});
return JSON.stringify(formJSON);
};
// Function to sign the serialized form data with Web3
async function web3Sign(serializedData) {
if (!window.ethereum) {
alert('MetaMask not detected. Please install MetaMask first.');
return;
}
try {
const provider = new ethers.providers.Web3Provider(window.ethereum);
await provider.send("eth_requestAccounts", []);
const signer = provider.getSigner();
const address = await signer.getAddress();
const signature = await signer.signMessage(serializedData);
return { address, signature };
} catch (error) {
console.error('Error signing data with Web3:', error);
return null;
}
}