import { useState } from 'react' import { WalletHeader } from '@widgets/wallet-header' import { Footer } from '@widgets/footer' import { useOrders } from '@features/payment' import type { OrderWithPayment, OrderStatus } from '@features/payment' import styles from './TransactionsPage.module.css' const ORDER_STATUS_LABELS: Record = { pending: 'Ожидание', completed: 'Выполнена', cancelled: 'Отменена', failed: 'Ошибка', } const PAYMENT_STATUS_LABELS: Record = { pending: 'Ожидание', completed: 'Оплачен', cancelled: 'Отменён', failed: 'Ошибка', } function formatDate(iso: string) { if (!iso) return '—' return new Date(iso).toLocaleString('ru-RU', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit', }) } function truncateHash(hash: string) { if (!hash) return '—' if (hash.length <= 16) return hash return `${hash.slice(0, 8)}…${hash.slice(-6)}` } function StatusBadge({ status, labels }: { status: OrderStatus; labels: Record }) { return ( {labels[status] ?? status} ) } function CopyButton({ value }: { value: string }) { const [copied, setCopied] = useState(false) function handleCopy() { navigator.clipboard.writeText(value).then(() => { setCopied(true) setTimeout(() => setCopied(false), 1500) }) } return ( ) } function OrderAccordion({ item }: { item: OrderWithPayment }) { const [isOpen, setIsOpen] = useState(false) const { order, payment } = item return (

Заказ

Сумма USDT {order.usdt_amount} USDT
Курс обмена 1 USDT = {order.usdt_exchange_rate} ₽
Сервисный сбор {order.service_fee} USDT
Комиссия за газ {order.gas_fee} USDT
Итого к оплате {Number(order.total_price).toLocaleString('ru-RU')} ₽

Платёж

Статус
Оплачено {payment.itpay_paid_amount || '—'}
Истекает {formatDate(payment.expired_date)}
Хэш транзакции {truncateHash(payment.web3_transaction_hash)} {payment.web3_transaction_hash && ( )}
Чек {payment.receipt_cloudekassir_link ? ( Открыть → ) : ( )}
) } export function TransactionsPage() { const { data, isLoading, isError, fetchNextPage, hasNextPage, isFetchingNextPage } = useOrders() const items: OrderWithPayment[] = data?.pages.flatMap(p => p.orders) ?? [] return (

Транзакции

{isLoading &&

Загрузка...

} {isError &&

Не удалось загрузить транзакции. Попробуйте обновить страницу.

} {!isLoading && !isError && items.length === 0 && (

У вас пока нет транзакций.

)} {items.length > 0 && (
{items.map((item) => ( ))}
)} {hasNextPage && (
)}
) }