diff --git a/packages/grant-explorer/src/features/attestations/utils/generateTransactionUrl.ts b/packages/grant-explorer/src/features/attestations/utils/generateTransactionUrl.ts new file mode 100644 index 000000000..40e0627d8 --- /dev/null +++ b/packages/grant-explorer/src/features/attestations/utils/generateTransactionUrl.ts @@ -0,0 +1,17 @@ +export const generateTransactionUrl = ({ + chainId, + attestationUid, +}: { + chainId?: number; + attestationUid?: string; +}) => { + if (!chainId || !attestationUid) return ""; + switch (chainId) { + case 11155111: + return `https://sepolia.easscan.org/attestation/view/${attestationUid}`; + case 42161: + return `https://arbitrum.easscan.org/attestation/view/${attestationUid}`; + default: + return ""; + } +}; diff --git a/packages/grant-explorer/src/features/contributors/components/Buttons/MintingActionButton.tsx b/packages/grant-explorer/src/features/contributors/components/Buttons/MintingActionButton.tsx index 3cabab455..39b47bbf6 100644 --- a/packages/grant-explorer/src/features/contributors/components/Buttons/MintingActionButton.tsx +++ b/packages/grant-explorer/src/features/contributors/components/Buttons/MintingActionButton.tsx @@ -5,6 +5,7 @@ import useColorAndBackground from "../../../../hooks/attestations/useColorAndBac import { MintDonationButton } from "./MintDonationButton"; import { MintDonationImpactAction } from "./MintDonationImpactAction"; import { ViewAttestationModal } from "../ViewAttestationModal/ViewAttestationModal"; +import { generateTransactionUrl } from "../../../attestations/utils/generateTransactionUrl"; export function MintingActionButton({ transaction, @@ -58,12 +59,19 @@ export function MintingActionButton({ selectedBackground, } = useColorAndBackground(); + const { attestationChainId: chainId, attestationUid = "" } = + attestation ?? {}; + return isMinted ? ( <> diff --git a/packages/grant-explorer/src/features/contributors/components/ViewAttestationModal/ViewAttestationModal.tsx b/packages/grant-explorer/src/features/contributors/components/ViewAttestationModal/ViewAttestationModal.tsx index 391b71e53..e200a22b1 100644 --- a/packages/grant-explorer/src/features/contributors/components/ViewAttestationModal/ViewAttestationModal.tsx +++ b/packages/grant-explorer/src/features/contributors/components/ViewAttestationModal/ViewAttestationModal.tsx @@ -1,3 +1,4 @@ +import { Link } from "react-router-dom"; import { useGetImages } from "../../../../hooks/attestations/useGetImages"; import { ImageWithLoading } from "../../../common/components/ImageWithLoading"; import Modal from "../../../common/components/Modal"; @@ -8,14 +9,14 @@ export type ViewAttestationModalProps = { isOpen: boolean; onClose: () => void; impactImageCid?: string; - onViewTransaction?: () => void; + transactionUrl?: string; }; export function ViewAttestationModal({ isOpen, onClose, impactImageCid, - onViewTransaction, + transactionUrl = "", }: ViewAttestationModalProps) { const { data: image, @@ -33,7 +34,9 @@ export function ViewAttestationModal({

{title}

- + + + , @@ -57,27 +60,27 @@ export const useMintingAttestations = ( }; export const useAttestationFee = () => { - const dataLayer = useDataLayer(); const exisitingAttestations = useQuery({ - queryKey :[], + queryKey: [], queryFn: async () => { const response = await dataLayer.getAttestationCount({ - attestationChainIds: [AttestationChainId] + attestationChainIds: [AttestationChainId], }); return response; }, - }) + }); const fee = useMemo(() => { if ( !exisitingAttestations.data || exisitingAttestations.data >= FeeExemptAttestationsLimit - ) return AttestationFee; + ) + return AttestationFee; return BigInt(0); }, [exisitingAttestations.data]); return { data: fee }; -}; \ No newline at end of file +};