import { MsgUpdateAdminEncodeObject } from "@cosmjs/cosmwasm-stargate"; import { useEffect, useState } from "react"; import { MsgGetter } from ".."; import { useChains } from "../../../../context/ChainsContext"; import { checkAddress, exampleAddress, trimStringsObj } from "../../../../lib/displayHelpers"; import { MsgCodecs, MsgTypeUrls } from "../../../../types/txMsg"; import Input from "../../../inputs/Input"; import StackableContainer from "../../../layout/StackableContainer"; interface MsgUpdateAdminFormProps { readonly senderAddress: string; readonly setMsgGetter: (msgGetter: MsgGetter) => void; readonly deleteMsg: () => void; } const MsgUpdateAdminForm = ({ senderAddress, setMsgGetter, deleteMsg, }: MsgUpdateAdminFormProps) => { const { chain } = useChains(); const [contractAddress, setContractAddress] = useState(""); const [newAdminAddress, setNewAdminAddress] = useState(""); const [contractAddressError, setContractAddressError] = useState(""); const [newAdminAddressError, setNewAdminAddressError] = useState(""); const trimmedInputs = trimStringsObj({ contractAddress, newAdminAddress }); useEffect(() => { // eslint-disable-next-line no-shadow const { contractAddress, newAdminAddress } = trimmedInputs; const isMsgValid = (): boolean => { setContractAddressError(""); setNewAdminAddressError(""); const contractAddressErrorMsg = checkAddress(contractAddress, chain.addressPrefix); if (contractAddressErrorMsg) { setContractAddressError( `Invalid address for network ${chain.chainId}: ${contractAddressErrorMsg}`, ); return false; } const newAdminAddressErrorMsg = checkAddress(newAdminAddress, chain.addressPrefix); if (newAdminAddressErrorMsg) { setNewAdminAddressError( `Invalid address for network ${chain.chainId}: ${newAdminAddressErrorMsg}`, ); return false; } return true; }; const msgValue = MsgCodecs[MsgTypeUrls.UpdateAdmin].fromPartial({ sender: senderAddress, contract: contractAddress, newAdmin: newAdminAddress, }); const msg: MsgUpdateAdminEncodeObject = { typeUrl: MsgTypeUrls.UpdateAdmin, value: msgValue }; setMsgGetter({ isMsgValid, msg }); }, [chain.addressPrefix, chain.chainId, senderAddress, setMsgGetter, trimmedInputs]); return (

MsgUpdateAdmin

{ setContractAddress(target.value); setContractAddressError(""); }} error={contractAddressError} placeholder={`E.g. ${exampleAddress(0, chain.addressPrefix)}`} />
{ setNewAdminAddress(target.value); setNewAdminAddressError(""); }} error={newAdminAddressError} placeholder={`E.g. ${exampleAddress(0, chain.addressPrefix)}`} />
); }; export default MsgUpdateAdminForm;