import {
useGetARTM,
useSignAndSubmitTransaction,
useGetTransaction,
} from '@futureverse/asset-register-react/v2'
const linkOperation = {
type: 'owner-link',
action: 'create',
args: [
'equipWith_asmBrain',
// Boxer
'did:fv-asset:1:evm:0x6bca6de2dbdc4e0d41f7273011785ea16ba47182:1000',
// Brain
'did:fv-asset:1:evm:0x1ea66a857de297471bc12dd12d93853ff6617284:21',
],
}
const LinkAccessory = ({ address }) => {
const {
artm,
reactQuery: { refetch: getARTM },
} = useGetARTM(
{
address,
[],
},
{ enabled: false },
)
const { submitAsync, transaction } = useSignAndSubmitTransaction()
// Polling tx status after submitted
const { transaction: transactionStatus } = useGetTransaction(
{ transactionHash: transaction?.transactionHash as any },
{
refetchInterval: (data) => (data?.status === 'PENDING' ? 2000 : false),
enabled: !!transaction?.transactionHash,
},
)
const submitARTM = async () => {
const { data: artm } = await getARTM()
if (!artm) {
return
}
artm.addOperation(linkOperation)
return submitAsync({ artm })
}
return (
<>
<button onClick={submitARTM}>Submit link accessory TX</button>
{transactionStatus && <div>{`tx status: ${transactionStatus.status}`}</div>}
</>
)
}