import { useState, useEffect } from "react"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Tag } from "primereact/tag"; import ZapDisplay from "@/components/zaps/ZapDisplay"; import { nip19 } from "nostr-tools"; import Image from "next/image" import { useZapsSubscription } from "@/hooks/nostrQueries/zaps/useZapsSubscription"; import { getTotalFromZaps } from "@/utils/lightning"; import { useImageProxy } from "@/hooks/useImageProxy"; import { useRouter } from "next/router"; import { formatTimestampToHowLongAgo } from "@/utils/time"; import { ProgressSpinner } from "primereact/progressspinner"; import { Message } from "primereact/message"; import useWindowWidth from "@/hooks/useWindowWidth"; import GenericButton from "@/components/buttons/GenericButton"; import appConfig from "@/config/appConfig"; export function CourseTemplate({ course }) { const { zaps, zapsLoading, zapsError } = useZapsSubscription({ event: course }); const [zapAmount, setZapAmount] = useState(0); const [lessonCount, setLessonCount] = useState(0); const [nAddress, setNAddress] = useState(null); const router = useRouter(); const { returnImageProxy } = useImageProxy(); const windowWidth = useWindowWidth(); const isMobile = windowWidth < 768; useEffect(() => { if (zaps.length > 0) { const total = getTotalFromZaps(zaps, course); setZapAmount(total); } }, [zaps, course]); useEffect(() => { if (course && course?.tags) { const lessons = course.tags.filter(tag => tag[0] === "a"); setLessonCount(lessons.length); } }, [course]); console.log(nip19.decode("naddr1qvzqqqr4gupzpueu32tp0jc47uzlcuxdgcw06m40ytu7ynpna2adnqty3e0vda6pqpqryvrxxyun2vnrxasngvt98q6rycfs8ycrvvpjx5mrjdpkvs6ryef38qmngcnpv4jkyd3nxcmxvvpkvgmrydpcxqmxxdfhvsckxctpvs42mx08")) useEffect(() => { if (course && course?.id) { const nAddress = nip19.naddrEncode({ pubkey: course.pubkey, kind: course.kind, identifier: course.id, relayUrls: appConfig.defaultRelayUrls }); setNAddress(nAddress); } }, [course]); if (!nAddress) return
if (zapsError) return
Error: {zapsError}
; return (
video thumbnail
{course.name}
{course && course.topics && course.topics.map((topic, index) => ( {topic} ))}

{lessonCount} {lessonCount === 1 ? "lesson" : "lessons"}

{ course?.price && course?.price > 0 ? ( ) : ( ) }

{(course.summary || course.description)?.split('\n').map((line, index) => ( {line} ))}

{course?.published_at && course.published_at !== "" ? ( formatTimestampToHowLongAgo(course.published_at) ) : ( formatTimestampToHowLongAgo(course.created_at) )}

router.push(`/course/${nAddress}`)} size="small" label="Start Learning" icon="pi pi-chevron-right" iconPos="right" outlined className="items-center py-2" />
) }