diff --git a/app/api/drivers/route.ts b/app/api/drivers/route.ts
index ee9cbd4..00c873e 100644
--- a/app/api/drivers/route.ts
+++ b/app/api/drivers/route.ts
@@ -43,7 +43,7 @@ export async function GET(request: Request) {
const rows = await query(sql);
// Transform to proper structure
- const drivers: DriverWithServer[] = rows.map((row: any) => ({
+ const drivers: DriverWithServer[] = rows.map((row: unkown) => ({
driver_guid: row.driver_guid,
driver_name: row.driver_name,
driver_team: row.driver_team,
@@ -85,24 +85,3 @@ export async function GET(request: Request) {
);
}
}
-
-// POST endpoint for updating driver data (optional, for future use)
-export async function POST(request: Request) {
- try {
- const body = await request.json();
-
- // Add your update logic here
- // Example: Update driver rank, stats, etc.
-
- return NextResponse.json({
- success: true,
- message: 'Driver updated',
- });
- } catch (error) {
- console.error('Error updating driver:', error);
- return NextResponse.json(
- { success: false, error: 'Failed to update driver' },
- { status: 500 }
- );
- }
-}
diff --git a/app/api/events/register/route.ts b/app/api/events/register/route.ts
index 586b701..0dd0098 100644
--- a/app/api/events/register/route.ts
+++ b/app/api/events/register/route.ts
@@ -51,7 +51,7 @@ export async function POST(request: Request) {
}
// Check if event exists and is open
- const eventCheck: any = await queryOne(
+ const eventCheck: unknown = await queryOne(
`SELECT event_id, event_status, max_participants,
(SELECT COUNT(*) FROM event_registrations
WHERE event_id = $1 AND status = 'REGISTERED') as current_registrations
diff --git a/app/api/live/telemetry/route.ts b/app/api/live/telemetry/route.ts
index c7bd320..fc41db6 100644
--- a/app/api/live/telemetry/route.ts
+++ b/app/api/live/telemetry/route.ts
@@ -31,7 +31,7 @@ async function updateRankCache() {
);
rankCache.clear();
- users.forEach((row: any) => {
+ users.forEach((row: unknown) => {
rankCache.set(row.driver_guid.toString(), {
rank: row.rank_position,
rating: row.user_rank
@@ -112,7 +112,7 @@ export async function GET(request: Request) {
const heartbeat = setInterval(() => {
try {
controller.enqueue(encoder.encode(`: heartbeat\n\n`));
- } catch (error) {
+ } catch {
clearInterval(heartbeat);
}
}, 30000);
@@ -124,7 +124,7 @@ export async function GET(request: Request) {
clearInterval(heartbeat);
try {
controller.close();
- } catch (error) {
+ } catch {
// Controller already closed
}
});
diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx
index 32489ce..573c5b6 100644
--- a/app/dashboard/page.tsx
+++ b/app/dashboard/page.tsx
@@ -36,7 +36,7 @@ async function getConnectedDrivers() {
const rows = await query(sql);
- return rows.map((row: any) => ({
+ return rows.map((row: unknown) => ({
driver_guid: row.driver_guid,
driver_name: row.driver_name,
driver_team: row.driver_team,
diff --git a/app/events/[event_id]/page.tsx b/app/events/[event_id]/page.tsx
index 7b69342..afedb64 100644
--- a/app/events/[event_id]/page.tsx
+++ b/app/events/[event_id]/page.tsx
@@ -107,7 +107,7 @@ export default async function EventDetailPage({
params: Promise<{ event_id: number }>;
}) {
const { event_id } = await params;
- const event: any = await getEvent(event_id);
+ const event: unknown = await getEvent(event_id);
if (!event) {
notFound();
}
@@ -205,7 +205,7 @@ export default async function EventDetailPage({
{registrations.length === 0 ? (
No registrations yet
) : (
- registrations.map((reg: any, index: number) => (
+ registrations.map((reg: unknown, index: number) => (
diff --git a/app/events/[event_id]/results/page.tsx b/app/events/[event_id]/results/page.tsx
index 56d21e7..ef62c72 100644
--- a/app/events/[event_id]/results/page.tsx
+++ b/app/events/[event_id]/results/page.tsx
@@ -2,26 +2,11 @@
// Event championship results page with auto-refresh
import { query } from '@/lib/db';
-import { TrophyIcon } from '@/components/ui/icons';
import Link from 'next/link';
import EventResultsClient from '@/components/events/EventResultsClient';
export const dynamic = "force-dynamic";
-interface TeamStanding {
- team_id: number;
- team_name: string;
- total_points: number;
- races_participated: number;
- best_finish: number;
- drivers: {
- driver_guid: string;
- driver_name: string;
- position: number;
- points_awarded: number;
- }[];
-}
-
async function getEventResults(eventId: number) {
if (eventId == undefined) {
@@ -72,15 +57,6 @@ async function getEventResults(eventId: number) {
return { event, standings };
}
-
-function getPositionColor(position: number): string {
- if (position === 1) return 'bg-yellow-500/20 border-yellow-500/50 text-yellow-400';
- if (position === 2) return 'bg-gray-400/20 border-gray-400/50 text-gray-300';
- if (position === 3) return 'bg-orange-600/20 border-orange-600/50 text-orange-400';
- return 'bg-white/5 border-white/10 text-white/60';
-}
-
-
export default async function EventResultsPage({
params,
diff --git a/app/events/page.tsx b/app/events/page.tsx
index 2f19d9b..19b18a2 100644
--- a/app/events/page.tsx
+++ b/app/events/page.tsx
@@ -67,7 +67,7 @@ export default async function EventsPage() {
Check back soon for new racing events
) : (
- events.map((event: any) => {
+ events.map((event: unknown) => {
const isOpen = event.event_status === 'OPEN';
const isFull = event.registrations_count >= event.max_participants;
const deadlinePassed = event.registration_deadline && new Date(event.registration_deadline) < new Date();
diff --git a/app/live/page.tsx b/app/live/page.tsx
index bab7859..3d3b342 100644
--- a/app/live/page.tsx
+++ b/app/live/page.tsx
@@ -12,7 +12,7 @@ interface LiveData {
server_track: string;
server_config: string;
connected_players: number;
- cars: any[];
+ cars: unknown[];
}
async function getLiveData(): Promise
{
@@ -32,7 +32,7 @@ async function getLiveData(): Promise {
// For each server, get connected cars with their positions
const liveData = await Promise.all(
- servers.map(async (server: any) => {
+ servers.map(async (server: unknown) => {
const carsSql = `
SELECT
u.driver_guid,
@@ -47,7 +47,7 @@ async function getLiveData(): Promise {
const cars = await query(carsSql, [server.server_id]);
// Add mock data for positions (real data will come from telemetry stream)
- const carsWithPositions = cars.map((car: any, index: number) => ({
+ const carsWithPositions = cars.map((car: unknown, index: number) => ({
...car,
carID: index,
position: index + 1,
diff --git a/app/music/page.tsx b/app/music/page.tsx
index 05de08c..4782402 100644
--- a/app/music/page.tsx
+++ b/app/music/page.tsx
@@ -1,6 +1,5 @@
'use client';
-import Image from "next/image";
import { useState, useRef, useEffect, MouseEvent } from 'react';
// Configuration
@@ -113,8 +112,20 @@ export default function MusicPage() {
};
useEffect(() => {
- void fetchTracks();
- }, []);
+ let active = true;
+
+ const run = async () => {
+ const data = await fetchTracks();
+ if (!active) return;
+ setTracks(data);
+ };
+
+ void run();
+
+ return () => {
+ active = false;
+ };
+ }, [isPlaying]);
// Group tracks by theme
const tracksByTheme = tracks.reduce>((acc, track) => {
@@ -338,7 +349,7 @@ export default function MusicPage() {
{isVideo ? (