38 lines
1.5 KiB
TypeScript
38 lines
1.5 KiB
TypeScript
import { usePageData } from '@/lib/page/usePageData';
|
|
import { useInject } from '@/lib/di/hooks/useInject';
|
|
import { LEAGUE_SERVICE_TOKEN, LEAGUE_MEMBERSHIP_SERVICE_TOKEN } from '@/lib/di/tokens';
|
|
import { LeagueRoleUtility } from '@/lib/utilities/LeagueRoleUtility';
|
|
|
|
export function useLeagueAdminStatus(leagueId: string, currentDriverId: string) {
|
|
const leagueMembershipService = useInject(LEAGUE_MEMBERSHIP_SERVICE_TOKEN);
|
|
|
|
return usePageData({
|
|
queryKey: ['admin-check', leagueId, currentDriverId],
|
|
queryFn: async () => {
|
|
await leagueMembershipService.fetchLeagueMemberships(leagueId);
|
|
const membership = leagueMembershipService.getMembership(leagueId, currentDriverId);
|
|
return membership ? LeagueRoleUtility.isLeagueAdminOrHigherRole(membership.role) : false;
|
|
},
|
|
enabled: !!leagueId && !!currentDriverId,
|
|
});
|
|
}
|
|
|
|
export function useLeagueSeasons(leagueId: string, isAdmin: boolean) {
|
|
const leagueService = useInject(LEAGUE_SERVICE_TOKEN);
|
|
|
|
return usePageData({
|
|
queryKey: ['leagueSeasons', leagueId],
|
|
queryFn: () => leagueService.getLeagueSeasonSummaries(leagueId),
|
|
enabled: !!leagueId && !!isAdmin,
|
|
});
|
|
}
|
|
|
|
export function useLeagueAdminSchedule(leagueId: string, selectedSeasonId: string, isAdmin: boolean) {
|
|
const leagueService = useInject(LEAGUE_SERVICE_TOKEN);
|
|
|
|
return usePageData({
|
|
queryKey: ['adminSchedule', leagueId, selectedSeasonId],
|
|
queryFn: () => leagueService.getAdminSchedule(leagueId, selectedSeasonId),
|
|
enabled: !!leagueId && !!selectedSeasonId && !!isAdmin,
|
|
});
|
|
} |