This commit is contained in:
2025-12-04 17:07:59 +01:00
parent 60a3c82cd9
commit 88c6befc7c
33 changed files with 602 additions and 261 deletions

View File

@@ -9,7 +9,7 @@ import {
requestToJoin,
getCurrentDriverId,
type MembershipStatus,
} from '@gridpilot/racing/application';
} from '@/lib/racingLegacyFacade';
interface JoinLeagueButtonProps {
leagueId: string;

View File

@@ -1,6 +1,6 @@
'use client';
import { useState, useEffect } from 'react';
import { useState, useEffect, useCallback } from 'react';
import { useRouter } from 'next/navigation';
import Button from '../ui/Button';
import Card from '../ui/Card';
@@ -15,7 +15,7 @@ import {
getCurrentDriverId,
type JoinRequest,
type MembershipRole,
} from '@gridpilot/racing/application';
} from '@/lib/racingLegacyFacade';
import { getDriverRepository } from '@/lib/di-container';
import { Driver } from '@gridpilot/racing/domain/entities/Driver';
@@ -33,11 +33,7 @@ export default function LeagueAdmin({ league, onLeagueUpdate }: LeagueAdminProps
const [error, setError] = useState<string | null>(null);
const [activeTab, setActiveTab] = useState<'members' | 'requests' | 'races' | 'settings'>('members');
useEffect(() => {
loadJoinRequests();
}, [league.id]);
const loadJoinRequests = async () => {
const loadJoinRequests = useCallback(async () => {
setLoading(true);
try {
const requests = getJoinRequests(league.id);
@@ -53,7 +49,11 @@ export default function LeagueAdmin({ league, onLeagueUpdate }: LeagueAdminProps
} finally {
setLoading(false);
}
};
}, [league.id]);
useEffect(() => {
loadJoinRequests();
}, [loadJoinRequests]);
const handleApproveRequest = (requestId: string) => {
try {

View File

@@ -1,6 +1,6 @@
'use client';
import { useState, useEffect } from 'react';
import { useState, useEffect, useCallback } from 'react';
import { Driver } from '@gridpilot/racing/domain/entities/Driver';
import { getDriverRepository, getDriverStats } from '@/lib/di-container';
import {
@@ -8,7 +8,7 @@ import {
getCurrentDriverId,
type LeagueMembership,
type MembershipRole,
} from '@gridpilot/racing/application';
} from '@/lib/racingLegacyFacade';
interface LeagueMembersProps {
leagueId: string;
@@ -29,11 +29,7 @@ export default function LeagueMembers({
const [sortBy, setSortBy] = useState<'role' | 'name' | 'date' | 'rating' | 'points' | 'wins'>('rating');
const currentDriverId = getCurrentDriverId();
useEffect(() => {
loadMembers();
}, [leagueId]);
const loadMembers = async () => {
const loadMembers = useCallback(async () => {
setLoading(true);
try {
const membershipData = getLeagueMembers(leagueId);
@@ -49,7 +45,11 @@ export default function LeagueMembers({
} finally {
setLoading(false);
}
};
}, [leagueId]);
useEffect(() => {
loadMembers();
}, [loadMembers]);
const getDriverName = (driverId: string): string => {
const driver = drivers.find(d => d.id === driverId);

View File

@@ -9,7 +9,7 @@ import {
isRegistered,
registerForRace,
withdrawFromRace,
} from '@gridpilot/racing/application';
} from '@/lib/racingLegacyFacade';
interface LeagueScheduleProps {
leagueId: string;

View File

@@ -1,6 +1,6 @@
'use client';
import { getMembership, getCurrentDriverId, type MembershipRole } from '@gridpilot/racing/application';
import { getMembership, getCurrentDriverId, type MembershipRole } from '@/lib/racingLegacyFacade';
interface MembershipStatusProps {
leagueId: string;