import React, {use, useEffect, useState} from "react"; import Image from "next/image"; import { useRouter } from "next/router"; import useResponsiveImageDimensions from "@/hooks/useResponsiveImageDimensions"; import { formatTimestampToHowLongAgo } from "@/utils/time"; import { useImageProxy } from "@/hooks/useImageProxy"; import { useNostr } from "@/hooks/useNostr"; import {getSatAmountFromInvoice} from "@/utils/lightning"; const CourseTemplate = (course) => { const [zaps, setZaps] = useState([]); const [zapAmount, setZapAmount] = useState(null); const router = useRouter(); const { returnImageProxy } = useImageProxy(); const { width, height } = useResponsiveImageDimensions(); const { fetchZapsForEvent } = useNostr(); useEffect(() => { const fetchZaps = async () => { try { const zaps = await fetchZapsForEvent(course.id); setZaps(zaps); } catch (error) { console.error('Error fetching zaps:', error); } }; fetchZaps(); }, [fetchZapsForEvent, course]); useEffect(() => { if (zaps.length > 0) { zaps.map((zap) => { const bolt11Tag = zap.tags.find(tag => tag[0] === 'bolt11'); const invoice = bolt11Tag ? bolt11Tag[1] : null; if (invoice) { const amount = getSatAmountFromInvoice(invoice); setZapAmount(zapAmount + amount); } }) } }, [zaps]); return (
router.push(`/details/${course.id}`)} className="flex flex-col items-center mx-auto px-4 cursor-pointer mt-8 rounded-md shadow-lg">
resource thumbnail

{course.title}

{course.summary}

Published: {formatTimestampToHowLongAgo(course.published_at)}

{zapAmount}

); }; export default CourseTemplate;