website refactor
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
'use client';
|
||||
|
||||
import { useState, useMemo } from 'react';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import type { TeamsPageDto } from '@/lib/page-queries/page-queries/TeamsPageQuery';
|
||||
import { TeamsPresenter } from '@/lib/presenters/TeamsPresenter';
|
||||
import type { TeamSummaryData } from '@/lib/view-data/TeamsViewData';
|
||||
import { TeamsTemplate } from '@/templates/TeamsTemplate';
|
||||
import type { TeamSummaryData } from '@/templates/view-data/TeamsViewData';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { useMemo, useState } from 'react';
|
||||
|
||||
interface TeamsPageClientProps {
|
||||
pageDto: TeamsPageDto;
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
import { useState } from 'react';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import type { TeamDetailPageDto } from '@/lib/page-queries/page-queries/TeamDetailPageQuery';
|
||||
import { TeamDetailPresenter } from '@/lib/presenters/TeamDetailPresenter';
|
||||
import TeamDetailTemplate from '@/templates/TeamDetailTemplate';
|
||||
import { TeamDetailPresenter } from '@/lib/view-models/TeamDetailPresenter';
|
||||
import { TeamDetailTemplate } from '@/templates/TeamDetailTemplate';
|
||||
|
||||
type Tab = 'overview' | 'roster' | 'standings' | 'admin';
|
||||
|
||||
@@ -53,11 +53,9 @@ export function TeamDetailPageClient({ pageDto }: TeamDetailPageClientProps) {
|
||||
|
||||
return (
|
||||
<TeamDetailTemplate
|
||||
team={viewData.team}
|
||||
memberships={viewData.memberships}
|
||||
viewData={viewData}
|
||||
activeTab={activeTab}
|
||||
loading={loading}
|
||||
isAdmin={viewData.isAdmin}
|
||||
onTabChange={handleTabChange}
|
||||
onUpdate={handleUpdate}
|
||||
onRemoveMember={handleRemoveMember}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { notFound } from 'next/navigation';
|
||||
import { TeamDetailPageQuery } from '@/lib/page-queries/TeamDetailPageQuery';
|
||||
import TeamDetailPageClient from './TeamDetailPageClient';
|
||||
import { TeamDetailPageQuery } from '@/lib/page-queries/page-queries/TeamDetailPageQuery';
|
||||
import { TeamDetailPageClient } from './TeamDetailPageClient';
|
||||
|
||||
export default async function Page({ params }: { params: { id: string } }) {
|
||||
const result = await TeamDetailPageQuery.execute(params.id);
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { PageWrapper } from '@/components/shared/state/PageWrapper';
|
||||
import { PageDataFetcher } from '@/lib/page/PageDataFetcher';
|
||||
import { TEAM_SERVICE_TOKEN } from '@/lib/di/tokens';
|
||||
import { TeamService } from '@/lib/services/teams/TeamService';
|
||||
import { TeamsApiClient } from '@/lib/api/teams/TeamsApiClient';
|
||||
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
|
||||
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
|
||||
import { getWebsiteApiBaseUrl } from '@/lib/config/apiBaseUrl';
|
||||
import { Trophy } from 'lucide-react';
|
||||
import { redirect } from 'next/navigation';
|
||||
import type { TeamSummaryViewModel } from '@/lib/view-models/TeamSummaryViewModel';
|
||||
import { TeamSummaryViewModel } from '@/lib/view-models/TeamSummaryViewModel';
|
||||
import { TeamLeaderboardPageWrapper } from './TeamLeaderboardPageWrapper';
|
||||
|
||||
// ============================================================================
|
||||
@@ -12,11 +13,23 @@ import { TeamLeaderboardPageWrapper } from './TeamLeaderboardPageWrapper';
|
||||
// ============================================================================
|
||||
|
||||
export default async function TeamLeaderboardPage() {
|
||||
// Fetch data using PageDataFetcher
|
||||
const teamsData = await PageDataFetcher.fetch<TeamService, 'getAllTeams'>(
|
||||
TEAM_SERVICE_TOKEN,
|
||||
'getAllTeams'
|
||||
);
|
||||
// Manual wiring: create dependencies
|
||||
const baseUrl = getWebsiteApiBaseUrl();
|
||||
const logger = new ConsoleLogger();
|
||||
const errorReporter = new EnhancedErrorReporter(logger, {
|
||||
showUserNotifications: true,
|
||||
logToConsole: true,
|
||||
reportToExternal: process.env.NODE_ENV === 'production',
|
||||
});
|
||||
|
||||
// Create API client
|
||||
const apiClient = new TeamsApiClient(baseUrl, errorReporter, logger);
|
||||
|
||||
// Fetch data
|
||||
const result = await apiClient.getAll();
|
||||
|
||||
// Transform DTO to ViewModel
|
||||
const teamsData: TeamSummaryViewModel[] = result.teams.map(team => new TeamSummaryViewModel(team));
|
||||
|
||||
// Prepare data for template
|
||||
const data: TeamSummaryViewModel[] | null = teamsData;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { notFound } from 'next/navigation';
|
||||
import { TeamsPageQuery } from '@/lib/page-queries/TeamsPageQuery';
|
||||
import TeamsPageClient from './TeamsPageClient';
|
||||
import { TeamsPageQuery } from '@/lib/page-queries/page-queries/TeamsPageQuery';
|
||||
import { TeamsPageClient } from './TeamsPageClient';
|
||||
|
||||
export default async function Page() {
|
||||
const result = await TeamsPageQuery.execute();
|
||||
|
||||
Reference in New Issue
Block a user