UNPKG

@smartinvoicexyz/hooks

Version:

Unified source for React hooks used across the Smart Invoice protocol.

57 lines (56 loc) 1.85 kB
import { SMART_INVOICE_INSTANT_ABI } from '@smartinvoicexyz/constants'; import _ from 'lodash'; import { useMemo } from 'react'; import { useReadContracts } from 'wagmi'; export const useInstantDetails = ({ address, chainId, enabled = true, }) => { const instantEscrowContract = { address, chainId, abi: SMART_INVOICE_INSTANT_ABI, }; const { data: contractData, isLoading: contractReadLoading } = useReadContracts({ contracts: [ { ...instantEscrowContract, functionName: 'getTotalDue', }, { ...instantEscrowContract, functionName: 'totalFulfilled', }, { ...instantEscrowContract, functionName: 'fulfilled', }, { ...instantEscrowContract, functionName: 'deadline', }, { ...instantEscrowContract, functionName: 'lateFee', }, { ...instantEscrowContract, functionName: 'lateFeeTimeInterval', }, ], query: { enabled: enabled && !!address && !!chainId, }, }); const parsedData = useMemo(() => { if (!contractData) return undefined; const [getTotalDue, totalFulfilled, fulfilled, deadline, lateFee, lateFeeTimeInterval,] = _.map(contractData, 'result'); return { totalDue: getTotalDue, amountFulfilled: totalFulfilled, fulfilled: fulfilled, deadline: deadline, lateFee: lateFee, lateFeeTimeInterval: lateFeeTimeInterval, }; }, [contractData]); return { data: parsedData, isLoading: contractReadLoading }; };