This commit is contained in:
+25
-9
@@ -11,6 +11,7 @@ import NotFound from '@/pages/NotFound'
|
||||
import PostDetailPage from '@/pages/posts/PostDetailPage'
|
||||
import PostListPage from '@/pages/posts/PostListPage'
|
||||
import PostNewPage from '@/pages/posts/PostNewPage'
|
||||
import ServiceUnavailable from '@/pages/ServiceUnavailable'
|
||||
import SettingPage from '@/pages/users/SettingPage'
|
||||
import WikiDetailPage from '@/pages/wiki/WikiDetailPage'
|
||||
import WikiDiffPage from '@/pages/wiki/WikiDiffPage'
|
||||
@@ -24,6 +25,7 @@ import type { User } from '@/types'
|
||||
|
||||
export default () => {
|
||||
const [user, setUser] = useState<User | null> (null)
|
||||
const [status, setStatus] = useState (200)
|
||||
|
||||
useEffect (() => {
|
||||
const createUser = async () => {
|
||||
@@ -40,18 +42,32 @@ export default () => {
|
||||
if (code)
|
||||
{
|
||||
void (async () => {
|
||||
const res = await axios.post (`${ API_BASE_URL }/users/verify`, { code })
|
||||
const data = res.data as { valid: boolean, user: any }
|
||||
if (data.valid)
|
||||
setUser (toCamel (data.user, { deep: true }))
|
||||
else
|
||||
await createUser ()
|
||||
try
|
||||
{
|
||||
const res = await axios.post (`${ API_BASE_URL }/users/verify`, { code })
|
||||
const data = res.data as { valid: boolean, user: any }
|
||||
if (data.valid)
|
||||
setUser (toCamel (data.user, { deep: true }))
|
||||
else
|
||||
await createUser ()
|
||||
}
|
||||
catch (err)
|
||||
{
|
||||
if (axios.isAxiosError (err))
|
||||
setStatus (err.status ?? 200)
|
||||
}
|
||||
}) ()
|
||||
}
|
||||
else
|
||||
createUser ()
|
||||
}, [])
|
||||
|
||||
switch (status)
|
||||
{
|
||||
case 503:
|
||||
return <ServiceUnavailable />
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Router>
|
||||
@@ -61,13 +77,13 @@ export default () => {
|
||||
<Routes>
|
||||
<Route path="/" element={<Navigate to="/posts" replace />} />
|
||||
<Route path="/posts" element={<PostListPage />} />
|
||||
<Route path="/posts/new" element={<PostNewPage />} />
|
||||
<Route path="/posts/new" element={<PostNewPage user={user} />} />
|
||||
<Route path="/posts/:id" element={<PostDetailPage user={user} />} />
|
||||
<Route path="/tags/nico" element={<NicoTagListPage user={user} />} />
|
||||
<Route path="/wiki" element={<WikiSearchPage />} />
|
||||
<Route path="/wiki/:title" element={<WikiDetailPage />} />
|
||||
<Route path="/wiki/new" element={<WikiNewPage />} />
|
||||
<Route path="/wiki/:id/edit" element={<WikiEditPage />} />
|
||||
<Route path="/wiki/new" element={<WikiNewPage user={user} />} />
|
||||
<Route path="/wiki/:id/edit" element={<WikiEditPage user={user} />} />
|
||||
<Route path="/wiki/:id/diff" element={<WikiDiffPage />} />
|
||||
<Route path="/wiki/changes" element={<WikiHistoryPage />} />
|
||||
<Route path="/users/settings" element={<SettingPage user={user} setUser={setUser} />} />
|
||||
|
||||
Reference in New Issue
Block a user