Files
OpenFlare/frontend/app/(main)/websites/[zoneId]/page.tsx
T
ryan fc569d1758 fix(frontend): dynamically import zone dashboard with ssr: false to cure hydration mismatch
- Dynamically import `ZonePageClient` with `ssr: false` in `websites/[zoneId]/page.tsx`.
- Remove `generateStaticParams` to prevent dynamic paths from building with inconsistent SSG/ISR outputs.
- Remove redundant `mounted` check from `page-client.tsx` since dashboard is client-only.
- Add `bytes_sent` to `NodeAccessLog` on both Agent and Master Server.
- Create ClickHouse migration `202607120001_add_bytes_sent_to_node_access_logs.sql`.
- Refactor duplicate stats structs by centralizing them into `analyticsmodel` package with type aliases.
- Simplify access log store delegations and remove redundant mapping loops.
- Support full console menu display management in settings other-tab.
- Regenerate Swagger documentation.
- Update changelog index.md.
2026-07-12 17:52:40 +08:00

30 lines
821 B
TypeScript

import {Suspense} from 'react'
import {Globe} from 'lucide-react'
import dynamic from 'next/dynamic'
import {LoadingStateWithBorder} from '@/components/layout/loading'
const ZonePageClient = dynamic(
() => import('./page-client').then((mod) => mod.ZonePageClient),
{
ssr: false,
loading: () => (
<div className="py-6 px-1">
<LoadingStateWithBorder icon={Globe} description="加载 Zone 详情中..." />
</div>
),
}
)
export default async function ZonePage({params}: PageProps<'/websites/[zoneId]'>) {
const {zoneId} = await params
return (
<Suspense fallback={
<div className="py-6 px-1">
<LoadingStateWithBorder icon={Globe} description="加载 Zone 详情中..." />
</div>
}>
<ZonePageClient zoneId={Number(zoneId)} />
</Suspense>
)
}