UNPKG

@intersect.mbo/govtool-delegation-pillar

Version:
58 lines (46 loc) 1.56 kB
import { useCallback, useState } from 'react'; import * as Sentry from '@sentry/react'; import { usePillarContext } from 'context'; import { useActionSuccessModal } from 'hooks'; import { useWalletErrorModal } from '../modal/useWalletErrorModal'; type MetadataInfo = { hash: string; uri: string; }; export const useUpdateVoter = () => { const { buildDRepUpdateCert, buildSignSubmitConwayCertTx } = usePillarContext(); const openActionSuccessModal = useActionSuccessModal(); const openWalletErrorModal = useWalletErrorModal(); const [isLoading, setIsLoading] = useState<boolean>(false); const updateVoter = useCallback( async (metadata: MetadataInfo) => { setIsLoading(true); if (metadata && !metadata.hash) return; const { hash, uri } = metadata; try { const updateDRepMetadataCert = await buildDRepUpdateCert(uri, hash); const result = await buildSignSubmitConwayCertTx({ certBuilder: updateDRepMetadataCert, type: 'updateMetaData', }); if (result) openActionSuccessModal({ action: 'registration', link: result }); } catch (error: any) { Sentry.setTag('hook', 'useUpdateVoter'); Sentry.captureException(error); openWalletErrorModal({ error, dataTestId: 'edit-drep-transaction-error-modal', }); } finally { setIsLoading(false); } }, [buildDRepUpdateCert, buildSignSubmitConwayCertTx] ); return { updateVoter, isUpdatingVoter: isLoading, }; };