Убрать метку «идёт» из блока незавершённых партий
Блок озаглавлен «Незавершённые партии», а каждая карточка заканчивается кнопкой «Завершить» — бейдж дублировал и то и другое; на странице группы, где название группы не показывается, он вдобавок висел в строке один. Заодно снято мёртвое ветвление в MatchListView: незавершённые партии туда не попадают ни из группы (там отдельный блок), ни из истории профиля (бэкенд фильтрует по status="finished"). На странице самой партии бейдж остаётся — там он единственный указатель статуса. #26 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186Fk74jkkszahEHSjBzTjD
This commit is contained in:
@@ -29,10 +29,7 @@ export function InProgressMatches({
|
|||||||
style={{ margin: 0, width: "100%", textAlign: "left" }}
|
style={{ margin: 0, width: "100%", textAlign: "left" }}
|
||||||
>
|
>
|
||||||
<div style={{ minWidth: 0 }}>
|
<div style={{ minWidth: 0 }}>
|
||||||
<div className="row" style={{ gap: 8 }}>
|
{showGroupName && <b>{m.group_name}</b>}
|
||||||
{showGroupName && <b>{m.group_name}</b>}
|
|
||||||
<span className="badge badge-live">идёт</span>
|
|
||||||
</div>
|
|
||||||
<div className="muted small">
|
<div className="muted small">
|
||||||
{formatTime(m.started_at)} · {m.player_count}{" "}
|
{formatTime(m.started_at)} · {m.player_count}{" "}
|
||||||
{plural(m.player_count, "игрок", "игрока", "игроков")}
|
{plural(m.player_count, "игрок", "игрока", "игроков")}
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ import { formatDate, formatDuration } from "../domain/format";
|
|||||||
import { winReasonLabel } from "../domain/winReasons";
|
import { winReasonLabel } from "../domain/winReasons";
|
||||||
import type { MatchListItem } from "../domain/types";
|
import type { MatchListItem } from "../domain/types";
|
||||||
|
|
||||||
|
/** Список ЗАВЕРШЁННЫХ партий. Незавершённые сюда не попадают: группа отдаёт их
|
||||||
|
* отдельным блоком (InProgressMatches), а история профиля приходит с бэкенда уже
|
||||||
|
* отфильтрованной по status="finished". */
|
||||||
export function MatchListView({ items }: { items: MatchListItem[] }) {
|
export function MatchListView({ items }: { items: MatchListItem[] }) {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
if (items.length === 0) return <div className="muted small">Партий пока нет.</div>;
|
if (items.length === 0) return <div className="muted small">Партий пока нет.</div>;
|
||||||
@@ -11,7 +14,6 @@ export function MatchListView({ items }: { items: MatchListItem[] }) {
|
|||||||
return (
|
return (
|
||||||
<div className="stack">
|
<div className="stack">
|
||||||
{items.map((m) => {
|
{items.map((m) => {
|
||||||
const inProgress = m.status === "in_progress";
|
|
||||||
const sorted = [...m.participants].sort((a, b) => (a.place ?? 99) - (b.place ?? 99));
|
const sorted = [...m.participants].sort((a, b) => (a.place ?? 99) - (b.place ?? 99));
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
@@ -22,13 +24,9 @@ export function MatchListView({ items }: { items: MatchListItem[] }) {
|
|||||||
>
|
>
|
||||||
<div className="row-between">
|
<div className="row-between">
|
||||||
<span className="muted small">{formatDate(m.played_at)}</span>
|
<span className="muted small">{formatDate(m.played_at)}</span>
|
||||||
{inProgress ? (
|
<span className="muted small">
|
||||||
<span className="badge badge-live">идёт</span>
|
{formatDuration(m.duration_minutes)} · {winReasonLabel(m.win_reason)}
|
||||||
) : (
|
</span>
|
||||||
<span className="muted small">
|
|
||||||
{formatDuration(m.duration_minutes)} · {winReasonLabel(m.win_reason)}
|
|
||||||
</span>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
<div className="stack" style={{ marginTop: 6, gap: 4 }}>
|
<div className="stack" style={{ marginTop: 6, gap: 4 }}>
|
||||||
{/* Ники здесь — просто текст: карточка целиком ведёт в партию,
|
{/* Ники здесь — просто текст: карточка целиком ведёт в партию,
|
||||||
|
|||||||
Reference in New Issue
Block a user