'use client'; import { useState, useEffect, useCallback } from 'react'; import Link from 'next/link'; import { TransactionList } from '@/components/TransactionList'; import { Button } from '@/components/ui'; import { api } from '@/lib/api'; import type { Transaction, PaginatedResponse } from '@/lib/types'; const PAGE_SIZE = 20; export default function HistoryPage() { const [transactions, setTransactions] = useState([]); const [total, setTotal] = useState(0); const [offset, setOffset] = useState(0); const [loading, setLoading] = useState(true); const [loadingMore, setLoadingMore] = useState(false); const [error, setError] = useState(null); const fetchPage = useCallback(async (currentOffset: number, append: boolean) => { if (append) setLoadingMore(true); else setLoading(true); setError(null); try { const page = await api.get>( `/api/v1/me/transactions?limit=${PAGE_SIZE}&offset=${currentOffset}`, ); setTransactions((prev) => (append ? [...prev, ...page.transactions] : page.transactions)); setTotal(page.total); } catch (e) { setError(e instanceof Error ? e.message : 'Ошибка загрузки'); } finally { setLoading(false); setLoadingMore(false); } }, []); useEffect(() => { fetchPage(0, false); }, [fetchPage]); function handleLoadMore() { const nextOffset = offset + PAGE_SIZE; setOffset(nextOffset); fetchPage(nextOffset, true); } const hasMore = transactions.length < total; return (
← Назад

История операций

{error && (

{error}

)}
{!loading && hasMore && (
)} {!loading && !hasMore && transactions.length > 0 && (

Это все операции

)}
); }