Skip to content

Commit 4ec9b63

Browse files
committed
optimizations
1 parent e9fa537 commit 4ec9b63

File tree

4 files changed

+30
-21
lines changed

4 files changed

+30
-21
lines changed

veto-board/src/components/BanPhase.jsx

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,26 @@ export default function BanPhase({ series, onSuccess }) {
7474
console.log("[DEBUG] Selection changed:", value);
7575

7676
if (value) {
77-
const [mapId, modeId] = value.split(",");
77+
// FIXED: Add validation for split
78+
const parts = value.split(",");
79+
if (parts.length !== 2) {
80+
console.warn("[DEBUG] Invalid selection format:", value);
81+
setSelectedMap(null);
82+
setSelectedMode(null);
83+
return;
84+
}
85+
86+
const [mapId, modeId] = parts;
7887
const mapNum = Number(mapId);
7988
const modeNum = Number(modeId);
8089

90+
if (isNaN(mapNum) || isNaN(modeNum)) {
91+
console.warn("[DEBUG] Invalid map or mode ID:", { mapNum, modeNum });
92+
setSelectedMap(null);
93+
setSelectedMode(null);
94+
return;
95+
}
96+
8197
console.log("[DEBUG] Parsed selection:", { mapNum, modeNum });
8298
setSelectedMap(mapNum);
8399
setSelectedMode(modeNum);

veto-board/src/components/SeriesLayout.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ export default function SeriesLayout({ series, onSuccess }) {
281281
className="bg-gray-800 text-white p-6 mt-4 rounded space-y-6"
282282
>
283283
<div className="flex justify-between items-center">
284-
<h2 className="text-2xl font-bold">Series Layout — Bo7</h2>
284+
<h2 className="text-2xl font-bold">Series Layout — {series?.type || 'Bo7'}</h2>
285285
<div className="flex items-center gap-4">
286286
<div className="text-sm text-gray-300">
287287
{series.team_a} vs {series.team_b}

veto-board/src/components/SeriesManager.jsx

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, useState } from "react";
1+
import { useEffect, useState, useMemo } from "react";
22
import { getSeries, postUndo, postReset } from "../lib/api";
33
import { processBansAndPicks } from "../lib/bans";
44
import BanPhase from "./BanPhase";
@@ -12,23 +12,13 @@ import { Download } from "lucide-react";
1212
export default function SeriesManager({ seriesId, onSuccess }) {
1313
const [series, setSeries] = useState(null);
1414
const [error, setError] = useState("");
15-
const [processedBanData, setProcessedBanData] = useState(null);
1615

1716
useEffect(() => {
1817
if (seriesId) {
1918
loadSeries();
2019
}
2120
}, [seriesId]);
2221

23-
useEffect(() => {
24-
if (series?.actions) {
25-
const banData = processBansAndPicks(series.actions);
26-
setProcessedBanData(banData);
27-
28-
console.log("[DEBUG] Processed ban data:", banData);
29-
}
30-
}, [series?.actions]);
31-
3222
const loadSeries = async () => {
3323
try {
3424
console.log("[DEBUG] Loading series data...");
@@ -38,13 +28,6 @@ export default function SeriesManager({ seriesId, onSuccess }) {
3828
console.log("[DEBUG] First 3 actions:", data.actions?.slice(0, 3));
3929

4030
setSeries(data);
41-
42-
// Process bans right after loading
43-
if (data?.actions) {
44-
const banData = processBansAndPicks(data.actions);
45-
setProcessedBanData(banData);
46-
console.log("[DEBUG] Processed ban data:", banData);
47-
}
4831
} catch (err) {
4932
console.error("[DEBUG] Error loading series:", err);
5033
setError("Could not load series.");
@@ -110,6 +93,10 @@ export default function SeriesManager({ seriesId, onSuccess }) {
11093
}
11194
};
11295

96+
const processedBanData = useMemo(() => {
97+
return processBansAndPicks(series?.actions || []);
98+
}, [series?.actions]);
99+
113100
const renderCurrentPhase = () => {
114101
if (!series) return null;
115102

veto-board/src/lib/analytics.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,13 @@ export function init({ measurementId, created, autoTrack = true } = {}) {
6464
window.gtag('js', new Date());
6565
window.gtag('config', _measurementId, { created: _created });
6666

67-
if (_autoTrack) hookHistory();
67+
if (_autoTrack) {
68+
// FIXED: Track which listeners we've added so we can avoid duplicates
69+
if (!window._gaHistoryHooked) {
70+
hookHistory();
71+
window._gaHistoryHooked = true;
72+
}
73+
}
6874
_initialized = true;
6975
}
7076

0 commit comments

Comments
 (0)