From a39b86c456a5127b1804f5d44227dd75ad8da193 Mon Sep 17 00:00:00 2001 From: miteruzo Date: Thu, 5 Feb 2026 00:45:18 +0900 Subject: [PATCH] #140 --- frontend/src/App.tsx | 7 +++---- frontend/src/lib/api.ts | 6 ++++++ frontend/src/pages/wiki/WikiSearchPage.tsx | 6 ++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 5d2e8a6..d844463 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,11 +1,10 @@ -import axios from 'axios' import { useEffect, useState } from 'react' import { BrowserRouter, Navigate, Route, Routes, useLocation } from 'react-router-dom' import RouteBlockerOverlay from '@/components/RouteBlockerOverlay' import TopNav from '@/components/TopNav' import { Toaster } from '@/components/ui/toaster' -import { apiPost } from '@/lib/api' +import { apiPost, isApiError } from '@/lib/api' import NicoTagListPage from '@/pages/tags/NicoTagListPage' import NotFound from '@/pages/NotFound' import PostDetailPage from '@/pages/posts/PostDetailPage' @@ -61,8 +60,8 @@ export default (() => { } catch (err) { - if (axios.isAxiosError (err)) - setStatus (err.status ?? 200) + if (isApiError (err)) + setStatus (err.response?.status ?? 200) } }) () } diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 57990c9..0911a6e 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -3,6 +3,8 @@ import toCamel from 'camelcase-keys' import { API_BASE_URL } from '@/config' +import type { AxiosError } from 'axios' + type Opt = { params?: Record headers?: Record @@ -64,3 +66,7 @@ export const apiDelete = async ( ): Promise => { await client.delete (path, withUserCode (opt)) } + + +export const isApiError = (err: unknown): err is AxiosError => + axios.isAxiosError (err) diff --git a/frontend/src/pages/wiki/WikiSearchPage.tsx b/frontend/src/pages/wiki/WikiSearchPage.tsx index dda152f..03c9d5b 100644 --- a/frontend/src/pages/wiki/WikiSearchPage.tsx +++ b/frontend/src/pages/wiki/WikiSearchPage.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react' +import { useEffect, useState } from 'react' import { Helmet } from 'react-helmet-async' import PrefetchLink from '@/components/PrefetchLink' @@ -7,6 +7,8 @@ import MainArea from '@/components/layout/MainArea' import { SITE_TITLE } from '@/config' import { apiGet } from '@/lib/api' +import type { FormEvent } from 'react' + import type { WikiPage } from '@/types' @@ -19,7 +21,7 @@ export default () => { setResults (await apiGet ('/wiki', { params: { title } })) } - const handleSearch = (ev: React.FormEvent) => { + const handleSearch = (ev: FormEvent) => { ev.preventDefault () search () }