import React, { useEffect, useState } from "react"; import { Tag } from "primereact/tag"; import Image from "next/image"; import ZapDisplay from "@/components/zaps/ZapDisplay"; import { useImageProxy } from "@/hooks/useImageProxy"; import { useZapsQuery } from "@/hooks/nostrQueries/zaps/useZapsQuery"; import GenericButton from "@/components/buttons/GenericButton"; import { nip19 } from "nostr-tools"; import { Divider } from "primereact/divider"; import { getTotalFromZaps } from "@/utils/lightning"; import dynamic from "next/dynamic"; const MDDisplay = dynamic( () => import("@uiw/react-markdown-preview"), { ssr: false, } ); const DocumentLesson = ({ lesson, course, decryptionPerformed, isPaid }) => { const [zapAmount, setZapAmount] = useState(0); const [nAddress, setNAddress] = useState(null); const { zaps, zapsLoading, zapsError } = useZapsQuery({ event: lesson, type: "lesson" }); const { returnImageProxy } = useImageProxy(); useEffect(() => { if (!zaps || zapsLoading || zapsError) return; const total = getTotalFromZaps(zaps, lesson); setZapAmount(total); }, [zaps, zapsLoading, zapsError, lesson]); useEffect(() => { if (lesson) { const addr = nip19.naddrEncode({ pubkey: lesson.pubkey, kind: lesson.kind, identifier: lesson.d, }) setNAddress(addr); } }, [lesson]); const renderContent = () => { if (isPaid && decryptionPerformed) { return ; } if (isPaid && !decryptionPerformed) { return (

This content is paid and needs to be purchased before viewing.

); } if (lesson?.content) { return ; } return null; } return (
lesson background image

{lesson.title}

{lesson.topics && lesson.topics.length > 0 && ( lesson.topics.map((topic, index) => ( )) )}

{lesson.summary}

{ window.open(`https://nostr.com/${nAddress}`, '_blank'); }} />
{renderContent()} {lesson?.additionalLinks && lesson.additionalLinks.length > 0 && (

External links:

)}
) } export default DocumentLesson;