@smartinvoicexyz/hooks
Version:
Unified source for React hooks used across the Smart Invoice protocol.
57 lines (56 loc) • 1.85 kB
JavaScript
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 };
};