import { useRouter } from 'next/router' import Head from 'next/head' import { useEffect, useState } from 'react' import { getSponsoringById } from '@/lib/sponsoringQueries' import type { Sponsoring } from '@/types/nostr' import { PageHeader } from '@/components/PageHeader' import { Footer } from '@/components/Footer' import { t } from '@/lib/i18n' export default function SponsoringPage(): React.ReactElement | null { const router = useRouter() const { id } = router.query const sponsoringId = typeof id === 'string' ? id : '' const [sponsoring, setSponsoring] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) useEffect(() => { if (!sponsoringId) { return } void loadSponsoring({ sponsoringId, setSponsoring, setLoading, setError }) }, [sponsoringId]) if (!sponsoringId) { return null } return ( <> Sponsoring - zapwall.fr
{loading &&

{t('common.loading')}

} {error &&

{error}

} {sponsoring && (

Sponsoring

)}
) } async function loadSponsoring(params: { sponsoringId: string setSponsoring: (value: Sponsoring | null) => void setLoading: (value: boolean) => void setError: (value: string | null) => void }): Promise { params.setLoading(true) params.setError(null) try { const s = await getSponsoringById(params.sponsoringId) if (!s) { params.setError('Sponsoring introuvable') return } params.setSponsoring(s) } catch (e) { params.setError(e instanceof Error ? e.message : 'Erreur lors du chargement du sponsoring') } finally { params.setLoading(false) } } function SponsoringDetails(params: { sponsoring: Sponsoring }): React.ReactElement { const {sponsoring} = params return (

Montant : {sponsoring.amount} sats

Auteur : {sponsoring.authorPubkey.substring(0, 16)}...

Payeur : {sponsoring.payerPubkey.substring(0, 16)}...

{sponsoring.seriesId && (

Série ID : {sponsoring.seriesId}

)} {sponsoring.articleId && (

Article ID : {sponsoring.articleId}

)}

Hash de paiement : {sponsoring.paymentHash}

Date : {new Date(sponsoring.createdAt * 1000).toLocaleString()}

) }