import { useErc721 } from '@/hooks';
import { motion } from 'framer-motion';
import React, { useEffect, useState } from 'react';
/**
* Props for the ERC721IsApprovedForAllDisplay component.
*
* @interface ERC721IsApprovedForAllDisplayProps
*
* @property {string} owner - The address of the owner of the ERC721 tokens.
* @property {string} operator - The address of the operator to check approval status for.
* @property {string} tokenAddress - The address of the ERC721 token contract.
* @property {string} chainId - The ID of the blockchain network.
* @property {string} [className] - Optional CSS class name to apply to the component.
*/
export interface ERC721IsApprovedForAllDisplayProps {
owner: string;
operator: string;
tokenAddress: string;
chainId: string;
className?: string;
}
/**
* ERC721IsApprovedForAllDisplay component displays the approval status of an ERC721 token.
*
* @component
* @param {ERC721IsApprovedForAllDisplayProps} props - The properties for the component.
* @param {string} props.owner - The address of the owner of the ERC721 token.
* @param {string} props.operator - The address of the operator to check approval status for.
* @param {string} props.tokenAddress - The address of the ERC721 token contract.
* @param {number} props.chainId - The chain ID of the blockchain network.
* @param {string} [props.className] - Additional CSS classes to apply to the component.
*
* @returns {JSX.Element} The rendered component displaying the approval status.
*
* @example
*
*/
export const ERC721IsApprovedForAllDisplay: React.FC<
ERC721IsApprovedForAllDisplayProps
> = ({ owner, operator, tokenAddress, chainId, className = '' }) => {
const { getErc721IsApprovedForAll } = useErc721();
const [isApproved, setIsApproved] = useState(null);
useEffect(() => {
const fetchApprovalStatus = async () => {
try {
const result = await getErc721IsApprovedForAll({
owner,
operator,
address: tokenAddress,
chainId,
});
setIsApproved(result.isApproved);
} catch (error) {
console.error('Failed to fetch ERC721 approval status:', error);
}
};
fetchApprovalStatus();
}, [owner, operator, tokenAddress, chainId]);
return (
ERC721 Is Approved For All:{' '}
{isApproved === null ? 'Loading...' : isApproved.toString()}
);
};
export default ERC721IsApprovedForAllDisplay;