diff --git a/frontend/src/components/InProgressMatches.tsx b/frontend/src/components/InProgressMatches.tsx index d4528c7..bb1971f 100644 --- a/frontend/src/components/InProgressMatches.tsx +++ b/frontend/src/components/InProgressMatches.tsx @@ -4,7 +4,16 @@ import { useNavigate } from "react-router-dom"; import { formatTime, plural } from "../domain/format"; import type { HomeInProgressMatch } from "../domain/types"; -export function InProgressMatches({ items }: { items: HomeInProgressMatch[] }) { +/** Блок незавершённых партий. На главной партии приходят из разных групп, поэтому + * название группы нужно; на странице самой группы оно дублирует заголовок — там + * блок вызывается с showGroupName={false}. */ +export function InProgressMatches({ + items, + showGroupName = true, +}: { + items: HomeInProgressMatch[]; + showGroupName?: boolean; +}) { const navigate = useNavigate(); if (items.length === 0) return null; @@ -21,7 +30,7 @@ export function InProgressMatches({ items }: { items: HomeInProgressMatch[] }) { >
- {m.group_name} + {showGroupName && {m.group_name}} идёт
diff --git a/frontend/src/pages/GroupPage.tsx b/frontend/src/pages/GroupPage.tsx index 783fdb7..5cf5f33 100644 --- a/frontend/src/pages/GroupPage.tsx +++ b/frontend/src/pages/GroupPage.tsx @@ -6,6 +6,7 @@ import { ApiError } from "../api/client"; import { CreateGroupForm } from "../components/CreateGroupForm"; import { GroupInvitations } from "../components/GroupInvitations"; import { GroupSwitcher } from "../components/GroupSwitcher"; +import { InProgressMatches } from "../components/InProgressMatches"; import { Leaderboard } from "../components/Leaderboard"; import { MatchListView } from "../components/MatchList"; import { PlayerSuggestions } from "../components/PlayerSuggestions"; @@ -83,6 +84,14 @@ export function GroupPage() { ); } + // Идущие партии выносим тем же блоком, что и на главной; из списка «Партии» + // их исключаем, иначе одна партия показалась бы на странице дважды. + const allMatches = matches?.items ?? []; + const inProgress = allMatches + .filter((m) => m.status === "in_progress") + .map((m) => ({ ...m, group_id: groupId, group_name: group?.name ?? "" })); + const finishedMatches = allMatches.filter((m) => m.status !== "in_progress"); + return (
@@ -152,8 +161,11 @@ export function GroupPage() { + {/* Название группы не показываем: оно уже есть в заголовке страницы. */} + +

Партии

- {matches && } + {matches && }
); }