Fix team sort: add to RunEncounters and fix hook ordering

Add sort dropdown to RunEncounters (the encounters page with the
expandable team section) and move all useMemo hooks before early
returns in both RunDashboard and RunEncounters to fix React hook
ordering violations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Julian Tabel
2026-02-09 12:21:07 +01:00
parent bc9bcf4c4b
commit 6d955439eb
2 changed files with 85 additions and 38 deletions

View File

@@ -56,6 +56,16 @@ export function RunDashboard() {
const [showEndRun, setShowEndRun] = useState(false)
const [teamSort, setTeamSort] = useState<TeamSortKey>('route')
const encounters = run?.encounters ?? []
const alive = useMemo(
() => sortEncounters(encounters.filter((e) => e.status === 'caught' && e.faintLevel === null), teamSort),
[encounters, teamSort],
)
const dead = useMemo(
() => sortEncounters(encounters.filter((e) => e.status === 'caught' && e.faintLevel !== null), teamSort),
[encounters, teamSort],
)
if (isLoading) {
return (
<div className="flex items-center justify-center py-16">
@@ -81,14 +91,6 @@ export function RunDashboard() {
}
const isActive = run.status === 'active'
const alive = useMemo(
() => sortEncounters(run.encounters.filter((e) => e.status === 'caught' && e.faintLevel === null), teamSort),
[run.encounters, teamSort],
)
const dead = useMemo(
() => sortEncounters(run.encounters.filter((e) => e.status === 'caught' && e.faintLevel !== null), teamSort),
[run.encounters, teamSort],
)
const visitedRoutes = new Set(run.encounters.map((e) => e.routeId)).size
const totalRoutes = routes?.length