From 1dbc8de1077353e6a5a80762d935322cc88d6e27 Mon Sep 17 00:00:00 2001 From: Youwen Wu Date: Wed, 14 Feb 2024 19:59:43 -0800 Subject: [PATCH] fix EVERYTHING for REAL --- src/app/db/loaders.ts | 1 + .../document/view/[slug]/DocumentViewer.tsx | 18 ++++++++++++++---- .../document/view/[slug]/VersionChooser.tsx | 6 +----- src/app/document/view/[slug]/page.tsx | 17 +++++++++++------ 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/app/db/loaders.ts b/src/app/db/loaders.ts index 759c783..4e40eec 100644 --- a/src/app/db/loaders.ts +++ b/src/app/db/loaders.ts @@ -91,6 +91,7 @@ export const loadAllAuthors = (): Promise<{ [key: string]: Author }> => { export const loadAuthors = ( authorIds: string[] ): Promise<{ [key: string]: Author }> => { + 'use client' return new Promise((resolve, reject) => { if (typeof Worker !== 'undefined') { const worker = new Worker( diff --git a/src/app/document/view/[slug]/DocumentViewer.tsx b/src/app/document/view/[slug]/DocumentViewer.tsx index e2a1eae..6cc1e09 100644 --- a/src/app/document/view/[slug]/DocumentViewer.tsx +++ b/src/app/document/view/[slug]/DocumentViewer.tsx @@ -1,4 +1,4 @@ -import { documents } from '@/app/db/data' +'use client' import { Zilla_Slab } from 'next/font/google' import { epoch2datestring } from '@/app/utils/epoch2datestring' import { @@ -12,16 +12,26 @@ import { ItemBadge, Status } from '@/app/components/Badges' import { notFound } from 'next/navigation' import VersionChooser from './VersionChooser' import crypto from 'crypto' -import loadingStyles from './loading.module.css' import { Suspense } from 'react' +import { loadDocument } from '@/app/db/loaders' +import { useSuspenseQuery } from '@tanstack/react-query' const zillaSlab = Zilla_Slab({ subsets: ['latin'], weight: ['500'] }) const DocumentViewer = ({ slug }: Readonly<{ slug: string }>) => { - const doc = documents[slug] + const { data, error } = useSuspenseQuery({ + queryKey: [slug], + queryFn: () => { + const data = loadDocument(slug) + return data + }, + }) + if (error) throw error + let doc = data + // const doc = documents[slug] const { manifest, abstract, citation } = doc - if (!manifest) return notFound() + // if (!manifest) return notFound() const { title, authors, diff --git a/src/app/document/view/[slug]/VersionChooser.tsx b/src/app/document/view/[slug]/VersionChooser.tsx index e40e7cc..95d23be 100644 --- a/src/app/document/view/[slug]/VersionChooser.tsx +++ b/src/app/document/view/[slug]/VersionChooser.tsx @@ -1,5 +1,5 @@ 'use client' -import { useState, useEffect } from 'react' +import { useState } from 'react' import { Document } from '@/app/db/data' import Link from 'next/link' import { loadAuthors } from '@/app/db/loaders' @@ -19,10 +19,6 @@ const VersionChooser = ({ }) if (error) throw error - useEffect(() => { - console.log(data) - }, [data]) - const { file } = doc const { authors, latest } = doc.manifest const date = epoch2date(doc.manifest.dates[doc.manifest.dates.length - 1]) diff --git a/src/app/document/view/[slug]/page.tsx b/src/app/document/view/[slug]/page.tsx index 6905223..2307200 100644 --- a/src/app/document/view/[slug]/page.tsx +++ b/src/app/document/view/[slug]/page.tsx @@ -1,13 +1,18 @@ +'use client' import DocumentViewer from './DocumentViewer' -import { documents } from '@/app/db/data' +import ErrorBoundary from '@/app/utils/ErrorBoundary' -export function generateStaticParams() { - const docsList = Object.keys(documents) - return docsList.map((doc) => ({ doc })) -} +// export function generateStaticParams() { +// const docsList = Object.keys(documents) +// return docsList.map((doc) => ({ doc })) +// } export default function Page({ params, }: Readonly<{ params: { slug: string } }>) { - return + return ( + + + + ) }