import { useEffect, useState } from 'react' import { useQuery } from '@tanstack/react-query' import { useLocale } from '@/lib/useLocale' import { useUITranslation } from '@/lib/useUITranslation' import PrefetchLink from '@/components/PrefetchLink' import FormField from '@/components/common/FormField' import PageTitle from '@/components/common/PageTitle' import MainArea from '@/components/layout/MainArea' import PageHead from '@/components/common/PageHead' import { apiGet } from '@/lib/api' import { wikiKeys } from '@/lib/queryKeys' import { dateString, inputClass } from '@/lib/utils' import type { FormEvent , FC } from 'react' import type { WikiPage } from '@/types' const WikiSearchPage: FC = () => { const { message, label } = useUITranslation ('shared') const locale = useLocale () const [title, setTitle] = useState ('') const [text, setText] = useState ('') const [submittedTitle, setSubmittedTitle] = useState ('') const { data: results = [], refetch } = useQuery ({ queryKey: wikiKeys.index ({ title: submittedTitle }, locale), queryFn: () => apiGet ('/wiki', { locale, params: { title: submittedTitle } }) }) const handleSearch = (ev: FormEvent) => { ev.preventDefault () if (submittedTitle === title) void refetch () else setSubmittedTitle (title) } useEffect (() => { setSubmittedTitle ('') }, [locale]) return (
{label ('navigation:wiki')}
{/* タイトル */} {({ invalid }) => ( setTitle (e.target.value)} className={inputClass (invalid)}/>)} {/* 内容 */} {({ invalid }) => ( setText (e.target.value)} className={inputClass (invalid)}/>)} {/* 検索 */}
{results.map (page => ( ))}
{label ('labels.title')} {label ('labels.lastUpdated')}
{page.title} {page.deprecatedAt != null && label ('labels.deprecatedSuffix')} {dateString (page.updatedAt)}
) } export default WikiSearchPage