import { useRouter } from 'next/router' import Head from 'next/head' import { useEffect, useState } from 'react' import { getReviewTipById } from '@/lib/reviewTipQueries' import type { ReviewTip } from '@/types/nostr' import { PageHeader } from '@/components/PageHeader' import { Footer } from '@/components/Footer' import { t } from '@/lib/i18n' export default function ReviewTipPage(): React.ReactElement | null { const router = useRouter() const { id } = router.query const reviewTipId = typeof id === 'string' ? id : '' const [reviewTip, setReviewTip] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) useEffect(() => { if (!reviewTipId) { return } void loadReviewTip({ reviewTipId, setReviewTip, setLoading, setError }) }, [reviewTipId]) if (!reviewTipId) { return null } return ( <> Remerciement d'avis - zapwall.fr
{loading &&

{t('common.loading')}

} {error &&

{error}

} {reviewTip && (

Remerciement d'avis

)}
) } async function loadReviewTip(params: { reviewTipId: string setReviewTip: (value: ReviewTip | null) => void setLoading: (value: boolean) => void setError: (value: string | null) => void }): Promise { params.setLoading(true) params.setError(null) try { const rt = await getReviewTipById(params.reviewTipId) if (!rt) { params.setError('Remerciement introuvable') return } params.setReviewTip(rt) } catch (e) { params.setError(e instanceof Error ? e.message : 'Erreur lors du chargement du remerciement') } finally { params.setLoading(false) } } function ReviewTipDetails(params: { reviewTip: ReviewTip }): React.ReactElement { const {reviewTip} = params return (

Montant : {reviewTip.amount} sats

Article ID : {reviewTip.articleId}

Avis ID : {reviewTip.reviewId}

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

Critique : {reviewTip.reviewerPubkey.substring(0, 16)}...

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

Hash de paiement : {reviewTip.paymentHash}

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

) }