website refactor
This commit is contained in:
@@ -58,6 +58,7 @@ export interface LeagueDetailData {
|
||||
*/
|
||||
@injectable()
|
||||
export class LeagueService implements Service {
|
||||
private readonly baseUrl: string;
|
||||
private apiClient: LeaguesApiClient;
|
||||
private driversApiClient: DriversApiClient;
|
||||
private sponsorsApiClient: SponsorsApiClient;
|
||||
@@ -65,6 +66,7 @@ export class LeagueService implements Service {
|
||||
|
||||
constructor(@unmanaged() apiClient?: LeaguesApiClient) {
|
||||
const baseUrl = getWebsiteApiBaseUrl();
|
||||
this.baseUrl = baseUrl;
|
||||
const logger = new ConsoleLogger();
|
||||
const errorReporter = new EnhancedErrorReporter(logger, {
|
||||
showUserNotifications: false,
|
||||
@@ -148,11 +150,27 @@ export class LeagueService implements Service {
|
||||
|
||||
async getLeagueDetailData(leagueId: string): Promise<Result<LeagueDetailData, DomainError>> {
|
||||
try {
|
||||
const [apiDto, memberships, racesResponse] = await Promise.all([
|
||||
const [apiDto, memberships, racesPageData] = await Promise.all([
|
||||
this.apiClient.getAllWithCapacityAndScoring(),
|
||||
this.apiClient.getMemberships(leagueId),
|
||||
this.apiClient.getRaces(leagueId),
|
||||
this.racesApiClient.getPageData(leagueId),
|
||||
]);
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
const membershipCount = Array.isArray(memberships?.members) ? memberships.members.length : 0;
|
||||
const racesCount = Array.isArray(racesPageData?.races) ? racesPageData.races.length : 0;
|
||||
const race0 = racesCount > 0 ? racesPageData.races[0] : null;
|
||||
|
||||
console.info(
|
||||
'[LeagueService.getLeagueDetailData] baseUrl=%s leagueId=%s memberships=%d races=%d race0=%o',
|
||||
this.baseUrl,
|
||||
leagueId,
|
||||
membershipCount,
|
||||
racesCount,
|
||||
race0,
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if (!apiDto || !apiDto.leagues) {
|
||||
return Result.err({ type: 'notFound', message: 'Leagues not found' });
|
||||
@@ -189,12 +207,21 @@ export class LeagueService implements Service {
|
||||
console.warn('Failed to fetch league scoring config', e);
|
||||
}
|
||||
|
||||
const races: RaceDTO[] = (racesPageData.races || []).map((r) => ({
|
||||
id: r.id,
|
||||
name: `${r.track} - ${r.car}`,
|
||||
date: r.scheduledAt,
|
||||
leagueName: r.leagueName,
|
||||
status: r.status,
|
||||
strengthOfField: r.strengthOfField,
|
||||
})) as unknown as RaceDTO[];
|
||||
|
||||
return Result.ok({
|
||||
league,
|
||||
owner,
|
||||
scoringConfig,
|
||||
memberships,
|
||||
races: racesResponse.races,
|
||||
races,
|
||||
sponsors: [], // Sponsors integration can be added here
|
||||
});
|
||||
} catch (error: unknown) {
|
||||
|
||||
Reference in New Issue
Block a user