Files
myeasycms-v2/apps/web/app/[locale]/home/[account]/meetings/page.tsx
Zaid Marzguioui 4aa11cd408
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 5m47s
Workflow / ⚫️ Test (push) Has been skipped
fix: add error handling to meetings + verband dashboard pages
SSR pages crash with 500 when Supabase queries fail (expired session,
network issues). Now catch errors and render with empty data instead
of crashing the entire page.
2026-04-01 13:40:02 +02:00

53 lines
1.7 KiB
TypeScript

import { getSupabaseServerClient } from '@kit/supabase/server-client';
import { createMeetingsApi } from '@kit/sitzungsprotokolle/api';
import { MeetingsTabNavigation, MeetingsDashboard } from '@kit/sitzungsprotokolle/components';
import { CmsPageShell } from '~/components/cms-page-shell';
import { AccountNotFound } from '~/components/account-not-found';
interface PageProps {
params: Promise<{ account: string }>;
}
export default async function MeetingsPage({ params }: PageProps) {
const { account } = await params;
const client = getSupabaseServerClient();
const { data: acct } = await client
.from('accounts')
.select('id')
.eq('slug', account)
.single();
if (!acct) return <AccountNotFound />;
const api = createMeetingsApi(client);
let stats = { totalProtocols: 0, thisYearProtocols: 0, openTasks: 0, overdueTasks: 0 };
let recentProtocols: Awaited<ReturnType<typeof api.getRecentProtocols>> = [];
let overdueTasks: Awaited<ReturnType<typeof api.getOverdueTasks>> = [];
try {
[stats, recentProtocols, overdueTasks] = await Promise.all([
api.getDashboardStats(acct.id),
api.getRecentProtocols(acct.id),
api.getOverdueTasks(acct.id),
]);
} catch (e) {
// Supabase query failed — render with empty data instead of crashing
console.error('Failed to load meetings dashboard:', e);
}
return (
<CmsPageShell account={account} title="Sitzungsprotokolle">
<MeetingsTabNavigation account={account} activeTab="overview" />
<MeetingsDashboard
stats={stats}
recentProtocols={recentProtocols}
overdueTasks={overdueTasks}
account={account}
/>
</CmsPageShell>
);
}