website refactor

This commit is contained in:
2026-01-17 15:46:55 +01:00
parent 4d5ce9bfd6
commit 72a626ce71
346 changed files with 19308 additions and 8605 deletions

View File

@@ -8,6 +8,7 @@ import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
import { getWebsiteApiBaseUrl } from '@/lib/config/apiBaseUrl';
import { isProductionEnvironment } from '@/lib/config/env';
import { HomeDiscoveryViewModel } from '@/lib/view-models/HomeDiscoveryViewModel';
/**
* Landing Service - DTO Only
@@ -21,7 +22,7 @@ export class LandingService implements Service {
private teamsApi: TeamsApiClient;
private authApi: AuthApiClient;
constructor() {
constructor(racesApi?: RacesApiClient, leaguesApi?: LeaguesApiClient, teamsApi?: TeamsApiClient) {
const baseUrl = getWebsiteApiBaseUrl();
const logger = new ConsoleLogger();
const errorReporter = new EnhancedErrorReporter(logger, {
@@ -30,12 +31,34 @@ export class LandingService implements Service {
reportToExternal: isProductionEnvironment(),
});
this.racesApi = new RacesApiClient(baseUrl, errorReporter, logger);
this.leaguesApi = new LeaguesApiClient(baseUrl, errorReporter, logger);
this.teamsApi = new TeamsApiClient(baseUrl, errorReporter, logger);
this.racesApi = racesApi || new RacesApiClient(baseUrl, errorReporter, logger);
this.leaguesApi = leaguesApi || new LeaguesApiClient(baseUrl, errorReporter, logger);
this.teamsApi = teamsApi || new TeamsApiClient(baseUrl, errorReporter, logger);
this.authApi = new AuthApiClient(baseUrl, errorReporter, logger);
}
async getHomeDiscovery(): Promise<any> {
try {
const [racesRes, leaguesRes, teamsRes] = await Promise.all([
this.racesApi.getPageData(),
this.leaguesApi.getAllWithCapacity(),
this.teamsApi.getAll(),
]);
const racesData = (racesRes as any).value || racesRes;
const leaguesData = (leaguesRes as any).value || leaguesRes;
const teamsData = (teamsRes as any).value || teamsRes;
return new HomeDiscoveryViewModel({
topLeagues: leaguesData.leagues.slice(0, 4),
teams: teamsData.teams.slice(0, 4),
upcomingRaces: racesData.races.slice(0, 4),
} as any);
} catch (error: unknown) {
throw error;
}
}
async getLandingData(): Promise<Result<{ featuredLeagues: unknown[]; stats: Record<string, unknown> }, DomainError>> {
return Result.ok({ featuredLeagues: [], stats: {} });
}