refactor page to use services

This commit is contained in:
2025-12-18 17:02:48 +01:00
parent fc386db06a
commit 9814d9682c
27 changed files with 434 additions and 282 deletions

View File

@@ -24,8 +24,7 @@ import {
import Card from '@/components/ui/Card';
import Button from '@/components/ui/Button';
// Dashboard service imports
import { ServiceFactory } from '@/lib/services/ServiceFactory';
import { useServices } from '@/lib/services/ServiceProvider';
import { DashboardOverviewViewModel } from '@/lib/view-models/DashboardOverviewViewModel';
@@ -81,27 +80,26 @@ function getGreeting(): string {
import { DashboardFeedItemSummaryViewModel } from '@/lib/view-models/DashboardOverviewViewModel';
export default function DashboardPage() {
const [dashboardData, setDashboardData] = useState<DashboardOverviewViewModel | null>(null);
const [isLoading, setIsLoading] = useState(true);
const [error, setError] = useState<string | null>(null);
const { dashboardService } = useServices();
const [dashboardData, setDashboardData] = useState<DashboardOverviewViewModel | null>(null);
const [isLoading, setIsLoading] = useState(true);
const [error, setError] = useState<string | null>(null);
useEffect(() => {
const fetchDashboardData = async () => {
try {
const serviceFactory = new ServiceFactory(process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3001');
const dashboardService = serviceFactory.createDashboardService();
const data = await dashboardService.getDashboardOverview();
setDashboardData(data);
} catch (err) {
console.error('Failed to fetch dashboard data:', err);
setError('Failed to load dashboard data');
} finally {
setIsLoading(false);
}
};
useEffect(() => {
const fetchDashboardData = async () => {
try {
const data = await dashboardService.getDashboardOverview();
setDashboardData(data);
} catch (err) {
console.error('Failed to fetch dashboard data:', err);
setError('Failed to load dashboard data');
} finally {
setIsLoading(false);
}
};
fetchDashboardData();
}, []);
fetchDashboardData();
}, [dashboardService]);
if (isLoading) {
return (