website refactor

This commit is contained in:
2026-01-14 23:46:04 +01:00
parent c1a86348d7
commit 4a2d7d15a5
294 changed files with 5637 additions and 3418 deletions

View File

@@ -0,0 +1,5 @@
export { useAvailableLeagues } from './useAvailableLeagues';
export { useSponsorDashboard } from './useSponsorDashboard';
export { useSponsorSponsorships } from './useSponsorSponsorships';
export { useSponsorBilling } from './useSponsorBilling';
export { useSponsorLeagueDetail } from './useSponsorLeagueDetail';

View File

@@ -0,0 +1,21 @@
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { SPONSOR_SERVICE_TOKEN } from '@/lib/di/tokens';
import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError';
export function useAvailableLeagues() {
const sponsorService = useInject(SPONSOR_SERVICE_TOKEN);
const queryResult = useQuery({
queryKey: ['availableLeagues'],
queryFn: async () => {
const result = await sponsorService.getAvailableLeagues();
if (result.isErr()) {
throw result.getError();
}
return result.unwrap();
},
});
return enhanceQueryResult(queryResult);
}

View File

@@ -0,0 +1,22 @@
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { SPONSOR_SERVICE_TOKEN } from '@/lib/di/tokens';
import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError';
export function useSponsorBilling(sponsorId: string) {
const sponsorService = useInject(SPONSOR_SERVICE_TOKEN);
const queryResult = useQuery({
queryKey: ['sponsorBilling', sponsorId],
queryFn: async () => {
const result = await sponsorService.getBilling(sponsorId);
if (result.isErr()) {
throw result.getError();
}
return result.unwrap();
},
enabled: !!sponsorId,
});
return enhanceQueryResult(queryResult);
}

View File

@@ -0,0 +1,22 @@
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { SPONSOR_SERVICE_TOKEN } from '@/lib/di/tokens';
import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError';
export function useSponsorDashboard(sponsorId: string) {
const sponsorService = useInject(SPONSOR_SERVICE_TOKEN);
const queryResult = useQuery({
queryKey: ['sponsorDashboard', sponsorId],
queryFn: async () => {
const result = await sponsorService.getSponsorDashboard(sponsorId);
if (result.isErr()) {
throw result.getError();
}
return result.unwrap();
},
enabled: !!sponsorId,
});
return enhanceQueryResult(queryResult);
}

View File

@@ -0,0 +1,22 @@
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { SPONSOR_SERVICE_TOKEN } from '@/lib/di/tokens';
import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError';
export function useSponsorLeagueDetail(leagueId: string) {
const sponsorService = useInject(SPONSOR_SERVICE_TOKEN);
const queryResult = useQuery({
queryKey: ['sponsorLeagueDetail', leagueId],
queryFn: async () => {
const result = await sponsorService.getLeagueDetail(leagueId);
if (result.isErr()) {
throw result.getError();
}
return result.unwrap();
},
enabled: !!leagueId,
});
return enhanceQueryResult(queryResult);
}

View File

@@ -0,0 +1,29 @@
import { useAuth } from '@/lib/auth/AuthContext';
import React from 'react';
export function useSponsorMode(): boolean {
const { session } = useAuth();
const [isSponsor, setIsSponsor] = React.useState(false);
React.useEffect(() => {
if (!session) {
setIsSponsor(false);
return;
}
// Check session.role for sponsor
const role = session.role;
if (role === 'sponsor') {
setIsSponsor(true);
return;
}
// Fallback: check email patterns
const email = session.email?.toLowerCase() || '';
const displayName = session.displayName?.toLowerCase() || '';
setIsSponsor(email.includes('sponsor') || displayName.includes('sponsor'));
}, [session]);
return isSponsor;
}

View File

@@ -0,0 +1,22 @@
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { SPONSOR_SERVICE_TOKEN } from '@/lib/di/tokens';
import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError';
export function useSponsorSponsorships(sponsorId: string) {
const sponsorService = useInject(SPONSOR_SERVICE_TOKEN);
const queryResult = useQuery({
queryKey: ['sponsorSponsorships', sponsorId],
queryFn: async () => {
const result = await sponsorService.getSponsorSponsorships(sponsorId);
if (result.isErr()) {
throw result.getError();
}
return result.unwrap();
},
enabled: !!sponsorId,
});
return enhanceQueryResult(queryResult);
}