dgf-prototype/client/src/UpdateMessage.jsx

79 lines
2.1 KiB
React
Raw Normal View History

2024-02-23 13:48:43 -06:00
import { useState } from 'react';
import {
Contracts, RuntimeArgs, CLValueBuilder, CLPublicKey, DeployUtil,
} from 'casper-js-sdk';
import axios from 'axios';
import getProvider from './casper-wallet';
const provider = getProvider();
const NETWORK_NAME = 'casper-test'; // "casper" for mainnet
const CONTRACT_HASH = 'hash-9d6641378c5859e4a0367b37f358d9861496318ba814bdd92903210a3f633198';
const updateMessage = (props, message) => {
const contract = new Contracts.Contract();
contract.setContractHash(CONTRACT_HASH);
const runtimeArguments = RuntimeArgs.fromMap({
message: CLValueBuilder.string(message),
});
const deploy = contract.callEntrypoint(
'hello',
runtimeArguments,
CLPublicKey.fromHex(props.publicKey),
NETWORK_NAME,
'1000000000', // 1 CSPR (10^9 Motes)
);
const deployJSON = DeployUtil.deployToJson(deploy);
// Initiates sign request
provider
.sign(JSON.stringify(deployJSON), props.publicKey)
.then((res) => {
if (res.cancelled) {
alert('Signing cancelled');
} else {
const signedDeploy = DeployUtil.setSignature(
deploy,
res.signature,
CLPublicKey.fromHex(props.publicKey),
);
console.log('signedDeploy:', signedDeploy);
console.log('signedDeploy json:', DeployUtil.deployToJson(signedDeploy));
axios
.post('/api/sendDeploy', DeployUtil.deployToJson(signedDeploy), {
headers: {
'Content-Type': 'application/json',
},
})
.then((response) => {
alert(response.data);
})
.catch((error) => {
console.error(error.message);
});
}
})
.catch((error) => {
console.error(error.message);
});
};
function UpdateMessage(props) {
const [message, setMessage] = useState('');
return (
<>
<input
id="message"
type="text"
value={message}
onChange={(e) => {
setMessage(e.target.value);
}}
/>
<button type="button" onClick={() => updateMessage(props, message)}>Update Message</button>
</>
);
}
export default UpdateMessage;