website refactor

This commit is contained in:
2026-01-18 23:43:58 +01:00
parent 7c1cf62d4e
commit c0559d8b48
76 changed files with 39 additions and 89 deletions

View File

@@ -1,79 +0,0 @@
'use client';
import React, { useState, useCallback } from 'react';
import { RaceDetailTemplate, RaceDetailViewData } from '@/templates/RaceDetailTemplate';
import { useRouter } from 'next/navigation';
interface Props {
data: RaceDetailViewData;
}
export function RaceDetailPageClient({ data: viewData }: Props) {
const router = useRouter();
const [animatedRatingChange] = useState(0);
const handleBack = useCallback(() => {
router.back();
}, [router]);
const handleRegister = useCallback(() => {
console.log('Register');
}, []);
const handleWithdraw = useCallback(() => {
console.log('Withdraw');
}, []);
const handleCancel = useCallback(() => {
console.log('Cancel');
}, []);
const handleReopen = useCallback(() => {
console.log('Reopen');
}, []);
const handleEndRace = useCallback(() => {
console.log('End Race');
}, []);
const handleFileProtest = useCallback(() => {
console.log('File Protest');
}, []);
const handleResultsClick = useCallback(() => {
router.push(`/races/${viewData.race.id}/results`);
}, [router, viewData.race.id]);
const handleStewardingClick = useCallback(() => {
router.push(`/races/${viewData.race.id}/stewarding`);
}, [router, viewData.race.id]);
const handleLeagueClick = useCallback((leagueId: string) => {
router.push(`/leagues/${leagueId}`);
}, [router]);
const handleDriverClick = useCallback((driverId: string) => {
router.push(`/drivers/${driverId}`);
}, [router]);
return (
<RaceDetailTemplate
viewData={viewData}
isLoading={false}
error={null}
onBack={handleBack}
onRegister={handleRegister}
onWithdraw={handleWithdraw}
onCancel={handleCancel}
onReopen={handleReopen}
onEndRace={handleEndRace}
onFileProtest={handleFileProtest}
onResultsClick={handleResultsClick}
onStewardingClick={handleStewardingClick}
onLeagueClick={handleLeagueClick}
onDriverClick={handleDriverClick}
animatedRatingChange={animatedRatingChange}
mutationLoading={{}}
/>
);
}

View File

@@ -1,7 +1,7 @@
import { notFound } from 'next/navigation';
import { PageWrapper } from '@/ui/PageWrapper';
import { RaceDetailPageQuery } from '@/lib/page-queries/races/RaceDetailPageQuery';
import { RaceDetailPageClient } from './RaceDetailPageClient';
import { RaceDetailPageClient } from '@/client-wrapper/RaceDetailPageClient';
interface RaceDetailPageProps {
params: Promise<{

View File

@@ -1,57 +0,0 @@
'use client';
import React, { useState, useCallback } from 'react';
import { RaceResultsTemplate } from '@/templates/RaceResultsTemplate';
import { RaceResultsViewData } from '@/lib/view-data/races/RaceResultsViewData';
import { useRouter } from 'next/navigation';
interface Props {
data: RaceResultsViewData;
}
export function RaceResultsPageClient({ data: viewData }: Props) {
const router = useRouter();
const [importing, setImporting] = useState(false);
const [importSuccess, setImportSuccess] = useState(false);
const [importError, setImportError] = useState<string | null>(null);
const [showImportForm, setShowImportForm] = useState(false);
const handleBack = useCallback(() => {
router.back();
}, [router]);
const handleImportResults = useCallback(async () => {
setImporting(true);
setImportError(null);
try {
// Mock import
await new Promise(resolve => setTimeout(resolve, 1000));
setImportSuccess(true);
} catch (err) {
setImportError('Failed to import results');
} finally {
setImporting(false);
}
}, []);
const handlePenaltyClick = useCallback(() => {
console.log('Penalty click');
}, []);
return (
<RaceResultsTemplate
viewData={viewData}
isAdmin={false}
isLoading={false}
error={null}
onBack={handleBack}
onImportResults={handleImportResults}
onPenaltyClick={handlePenaltyClick}
importing={importing}
importSuccess={importSuccess}
importError={importError}
showImportForm={showImportForm}
setShowImportForm={setShowImportForm}
/>
);
}

View File

@@ -1,7 +1,7 @@
import { notFound } from 'next/navigation';
import { PageWrapper } from '@/ui/PageWrapper';
import { RaceResultsPageQuery } from '@/lib/page-queries/races/RaceResultsPageQuery';
import { RaceResultsPageClient } from './RaceResultsPageClient';
import { RaceResultsPageClient } from '@/client-wrapper/RaceResultsPageClient';
interface RaceResultsPageProps {
params: Promise<{