|
1 | 1 | 'use client'
|
2 | 2 |
|
3 |
| -import { useQuery, useQueryClient } from '@tanstack/react-query' |
4 |
| -import { useEffect, useRef } from 'react' |
| 3 | +import { useLayoutEffect } from 'react' |
5 | 4 | import { useRouter } from 'next/navigation'
|
6 | 5 |
|
7 | 6 | import { Loading } from '~/components/ui/loading'
|
8 |
| -import { apiClient } from '~/lib/request' |
9 | 7 | import { routeBuilder, Routes } from '~/lib/route-builder'
|
10 |
| -import { queries } from '~/queries/definition' |
11 | 8 |
|
12 | 9 | import { Paper } from '../../components/layout/container/Paper'
|
13 | 10 |
|
| 11 | +export const revalidate = 60 |
| 12 | + |
14 | 13 | export default function Page() {
|
15 |
| - const { data } = useQuery( |
16 |
| - ['note', 'latest'], |
17 |
| - async () => (await apiClient.note.getLatest()).$serialized, |
18 |
| - { |
19 |
| - cacheTime: 1, |
20 |
| - }, |
21 |
| - ) |
22 |
| - const queryClient = useQueryClient() |
23 | 14 | const router = useRouter()
|
24 |
| - const onceRef = useRef(false) |
25 |
| - useEffect(() => { |
26 |
| - if (!data) return |
27 |
| - if (onceRef.current) return |
| 15 | + useLayoutEffect(() => { |
| 16 | + ;(async () => { |
| 17 | + const { nid } = await fetch('/api/note/latest', { |
| 18 | + next: { |
| 19 | + revalidate: 60, |
| 20 | + }, |
| 21 | + }).then( |
| 22 | + (res) => |
| 23 | + res.json() as Promise<{ |
| 24 | + nid: number |
| 25 | + }>, |
| 26 | + ) |
28 | 27 |
|
29 |
| - queryClient.setQueryData( |
30 |
| - queries.note.byNid(data.data.nid.toString()).queryKey, |
31 |
| - data, |
32 |
| - ) |
33 |
| - onceRef.current = true |
34 |
| - const id = setTimeout(() => { |
35 |
| - router.replace( |
| 28 | + router.push( |
36 | 29 | routeBuilder(Routes.Note, {
|
37 |
| - id: data.data.nid.toString(), |
| 30 | + id: nid, |
38 | 31 | }),
|
39 | 32 | )
|
40 |
| - }, 1) |
41 |
| - return () => { |
42 |
| - clearTimeout(id) |
43 |
| - } |
44 |
| - }, [data]) |
| 33 | + })() |
| 34 | + }, []) |
45 | 35 |
|
46 | 36 | return (
|
47 | 37 | <Paper>
|
|
0 commit comments