Профиль: догрузка истории и счётчик партий в шапке
История запрашивалась без limit/offset, поэтому бэкенд отдавал первые 20 партий, а страницы рисовали их и молча игнорировали total: у игрока с 40 партиями половина истории просто не существовала — ни кнопки, ни намёка. Теперь история грузится страницами по 20, под списком — «Показать ещё». Постранично, а не одним большим запросом: у эндпоинта потолок limit=100, и на 101-й партии обрезка вернулась бы. Кнопка живёт в самом компоненте истории, поэтому появилась сразу и в своём профиле, и в чужом, и в обоих режимах подробности. Общее число партий вынесено в шапку профиля, к нику. Берём его из статистики, а не из total истории: в режиме «только лучшая партия» total равен единице, и счётчик показывал бы «Партий: 1». #30 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf
This commit is contained in:
@@ -13,14 +13,38 @@ export function MatchHistory({
|
||||
items,
|
||||
userId,
|
||||
detail,
|
||||
hasMore = false,
|
||||
loadingMore = false,
|
||||
onMore,
|
||||
}: {
|
||||
items: MatchListItem[];
|
||||
userId: number;
|
||||
detail: string;
|
||||
hasMore?: boolean;
|
||||
loadingMore?: boolean;
|
||||
onMore?: () => void;
|
||||
}) {
|
||||
const navigate = useNavigate();
|
||||
|
||||
const more = hasMore && onMore && (
|
||||
<button
|
||||
className="btn btn-ghost btn-block"
|
||||
style={{ marginTop: 10 }}
|
||||
onClick={onMore}
|
||||
disabled={loadingMore}
|
||||
>
|
||||
{loadingMore ? "Загружаю…" : "Показать ещё"}
|
||||
</button>
|
||||
);
|
||||
|
||||
if (items.length === 0) return <div className="muted small">Партий пока нет.</div>;
|
||||
if (detail === "full") return <MatchListView items={items} />;
|
||||
if (detail === "full")
|
||||
return (
|
||||
<>
|
||||
<MatchListView items={items} />
|
||||
{more}
|
||||
</>
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="stack">
|
||||
@@ -55,6 +79,7 @@ export function MatchHistory({
|
||||
</button>
|
||||
);
|
||||
})}
|
||||
{more}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user