История игр в профиле обрезается на 20 партиях без подсказки (#30) #42

Merged
NotBigGhost merged 1 commits from issue-30-history-load-more into dev 2026-09-09 20:31:06 +03:00
Collaborator

Что сделано

История в профиле грузится страницами по 20, под списком — кнопка «Показать ещё». Раньше запрос уходил без limit/offset, бэкенд отдавал первые 20 партий, а страницы рисовали их и молча игнорировали total: у игрока с 40 партиями половина истории просто не существовала — ни кнопки, ни намёка на обрезку.

Постранично, а не одним большим запросом: у эндпоинта потолок limit=100, поэтому «поднять лимит» вернуло бы ту же проблему на 101-й партии. Использован useInfiniteQuery, ключ qk.userMatches(id) не менялся — инвалидация из matchAffectedKeys продолжает работать, просто перезапрашивает загруженные страницы.

Кнопка живёт в самом MatchHistory, поэтому появилась разом в своём профиле и в чужом, и в обоих режимах подробности (компактном и полном). Счётчика рядом с ней нет — как вы и просили.

Общее число партий вынесено наверх, в шапку профиля под ник: «Партий: N», и в своём профиле, и в чужом. Источник — статистика, а не total истории: в режиме «только лучшая партия» total равен единице, и счётчик показывал бы «Партий: 1».

Коммиты

  • f2aaa2a Профиль: догрузка истории и счётчик партий в шапке

Проверки

  • npm run build (tsc --noEmit + vite build) — зелёный
  • pytest — 91 passed (бэкенд не менялся, прогон как страховка)
  • API не трогал: limit/offset у эндпоинта уже были, schema.d.ts не перегенерировался

Ручной прогон в dev не делал — стенд был занят; кнопку и счётчик стоит посмотреть глазами при ревью.

Отклонения от плана

Нет.

Closes #30

🤖 Generated with Claude Code

https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf

## Что сделано История в профиле грузится страницами по 20, под списком — кнопка **«Показать ещё»**. Раньше запрос уходил без `limit`/`offset`, бэкенд отдавал первые 20 партий, а страницы рисовали их и молча игнорировали `total`: у игрока с 40 партиями половина истории просто не существовала — ни кнопки, ни намёка на обрезку. Постранично, а не одним большим запросом: у эндпоинта потолок `limit=100`, поэтому «поднять лимит» вернуло бы ту же проблему на 101-й партии. Использован `useInfiniteQuery`, ключ `qk.userMatches(id)` не менялся — инвалидация из `matchAffectedKeys` продолжает работать, просто перезапрашивает загруженные страницы. Кнопка живёт в самом `MatchHistory`, поэтому появилась разом в своём профиле и в чужом, и в обоих режимах подробности (компактном и полном). Счётчика рядом с ней нет — как вы и просили. **Общее число партий** вынесено наверх, в шапку профиля под ник: «Партий: N», и в своём профиле, и в чужом. Источник — статистика, а не `total` истории: в режиме «только лучшая партия» `total` равен единице, и счётчик показывал бы «Партий: 1». ## Коммиты - `f2aaa2a` Профиль: догрузка истории и счётчик партий в шапке ## Проверки - `npm run build` (tsc --noEmit + vite build) — зелёный - `pytest` — 91 passed (бэкенд не менялся, прогон как страховка) - API не трогал: `limit`/`offset` у эндпоинта уже были, `schema.d.ts` не перегенерировался Ручной прогон в dev не делал — стенд был занят; кнопку и счётчик стоит посмотреть глазами при ревью. ## Отклонения от плана Нет. Closes #30 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf
Agent added 1 commit 2026-09-09 20:27:54 +03:00
История запрашивалась без 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
NotBigGhost merged commit 634a4c0e08 into dev 2026-09-09 20:31:06 +03:00
NotBigGhost deleted branch issue-30-history-load-more 2026-09-09 20:31:07 +03:00
Sign in to join this conversation.