This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { useQuery } from '@tanstack/react-query'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { Helmet } from 'react-helmet-async'
|
||||
import { useLocation, useNavigate, useParams } from 'react-router-dom'
|
||||
@@ -12,10 +13,11 @@ import MainArea from '@/components/layout/MainArea'
|
||||
import { SITE_TITLE } from '@/config'
|
||||
import { WikiIdBus } from '@/lib/eventBus/WikiIdBus'
|
||||
import { fetchPosts } from '@/lib/posts'
|
||||
import { wikiKeys } from '@/lib/queryKeys'
|
||||
import { fetchTagByName } from '@/lib/tags'
|
||||
import { fetchWikiPage, fetchWikiPageByTitle } from '@/lib/wiki'
|
||||
|
||||
import type { Post, Tag, WikiPage } from '@/types'
|
||||
import type { Post, Tag } from '@/types'
|
||||
|
||||
|
||||
export default () => {
|
||||
@@ -29,16 +31,25 @@ export default () => {
|
||||
|
||||
const [posts, setPosts] = useState<Post[]> ([])
|
||||
const [tag, setTag] = useState (defaultTag)
|
||||
const [wikiPage, setWikiPage] = useState<WikiPage | null | undefined> (undefined)
|
||||
|
||||
const query = new URLSearchParams (location.search)
|
||||
const version = query.get ('version')
|
||||
|
||||
const { data: wikiPage } = useQuery ({
|
||||
enabled: Boolean (title) && !(/^\d+$/.test (title)),
|
||||
queryKey: wikiKeys.show (title ?? '', version ? { version } : { }),
|
||||
queryFn: () => fetchWikiPageByTitle (title ?? '', version ? { version } : { }) })
|
||||
if (wikiPage)
|
||||
{
|
||||
if (wikiPage.title !== title)
|
||||
navigate (`/wiki/${ encodeURIComponent(wikiPage.title) }`, { replace: true })
|
||||
WikiIdBus.set (wikiPage.id)
|
||||
}
|
||||
|
||||
useEffect (() => {
|
||||
if (/^\d+$/.test (title))
|
||||
{
|
||||
void (async () => {
|
||||
setWikiPage (undefined)
|
||||
try
|
||||
{
|
||||
const data = await fetchWikiPage (title, { })
|
||||
@@ -53,22 +64,6 @@ export default () => {
|
||||
return
|
||||
}
|
||||
|
||||
void (async () => {
|
||||
setWikiPage (undefined)
|
||||
try
|
||||
{
|
||||
const data = await fetchWikiPageByTitle (title, version ? { version } : { })
|
||||
if (data.title !== title)
|
||||
navigate (`/wiki/${ encodeURIComponent(data.title) }`, { replace: true })
|
||||
setWikiPage (data)
|
||||
WikiIdBus.set (data.id)
|
||||
}
|
||||
catch
|
||||
{
|
||||
setWikiPage (null)
|
||||
}
|
||||
}) ()
|
||||
|
||||
setPosts ([])
|
||||
void (async () => {
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user