22import { Suspense } from 'react'
33import type { Metadata } from 'next'
44
5+ import { BizErrorPage } from '~/components/common/BizErrorPage'
56import { buildRoomName , RoomProvider } from '~/components/modules/activity'
67import { CommentAreaRootLazy } from '~/components/modules/comment'
8+ import { NotePasswordForm } from '~/components/modules/note'
79import { NoteFontSettingFab } from '~/components/modules/note/NoteFontFab'
810import { NoteMainContainer } from '~/components/modules/note/NoteMainContainer'
911import { TocFAB } from '~/components/modules/toc/TocFAB'
1012import { BottomToUpSoftScaleTransitionView } from '~/components/ui/transition'
1113import { OnlyMobile } from '~/components/ui/viewport/OnlyMobile'
1214import { getOgUrl } from '~/lib/helper.server'
1315import { getSummaryFromMd } from '~/lib/markdown'
16+ import { unwrapRequest } from '~/lib/request.server'
1417import {
1518 CurrentNoteDataProvider ,
1619 SyncNoteDataAfterLoggedIn ,
@@ -30,7 +33,9 @@ export const generateMetadata = async ({
3033 }
3134} ) : Promise < Metadata > => {
3235 try {
33- const data = ( await getData ( params ) ) . data
36+ const res = await getData ( params )
37+
38+ const data = res . data
3439 const { title, text } = data
3540 const description = getSummaryFromMd ( text ?? '' )
3641
@@ -66,7 +71,25 @@ export default async (
6671) => {
6772 const { params } = props
6873 const { id : nid } = params
69- const data = await getData ( params )
74+ const { data, error, status, bizMessage } = await unwrapRequest (
75+ getData ( params ) ,
76+ )
77+
78+ if ( status === 403 ) {
79+ return (
80+ < Paper >
81+ < NotePasswordForm />
82+ < CurrentNoteNidProvider nid = { nid } />
83+ </ Paper >
84+ )
85+ }
86+
87+ if ( error ) {
88+ if ( bizMessage ) {
89+ return < BizErrorPage status = { status } bizMessage = { bizMessage } />
90+ }
91+ throw error
92+ }
7093
7194 const { id : noteObjectId , allowComment } = data . data
7295
0 commit comments