diff --git a/components/Search.tsx b/components/Search.tsx index 1121034..903bc3b 100644 --- a/components/Search.tsx +++ b/components/Search.tsx @@ -29,7 +29,7 @@ const Search = (): JSX.Element => { const onSubmit = async () => { setHidden(true) - redirectTo(router, `/search/?query=${encodeURIComponent(query)}`) + redirectTo(router, `/search/?q=${encodeURIComponent(query)}`) } return
diff --git a/pages/search.tsx b/pages/search.tsx index 6031a33..ea55736 100644 --- a/pages/search.tsx +++ b/pages/search.tsx @@ -1,11 +1,13 @@ import { NextPage, NextPageContext } from 'next' import dynamic from 'next/dynamic' +import { useRouter } from 'next/router' import { ParsedUrlQuery } from 'querystring' import { BotList } from '@types' import { get } from '@utils/Query' -import { PageCount } from '@utils/Yup' -import NotFound from './404' +import { SearchQuerySchema } from '@utils/Yup' +import { redirectTo } from '@utils/Tools' + const Hero = dynamic(() => import('@components/Hero')) const Advertisement = dynamic(() => import('@components/Advertisement')) @@ -15,18 +17,23 @@ const Container = dynamic(() => import('@components/Container')) const Paginator = dynamic(() => import('@components/Paginator')) const Search:NextPage = ({ data, query }) => { - if(!data || data.data.length === 0) return + const router = useRouter() + if(!query?.q) redirectTo(router, '/') return <> - - + + -
- { - data.data.map(bot => ) - } -
- + { !data || data.data.length === 0 ?

검색 결과가 없습니다.

: + <> +
+ { + data.data.map(bot => ) + } +
+ + + }
@@ -35,9 +42,9 @@ const Search:NextPage = ({ data, query }) => { export const getServerSideProps = async(ctx: Context) => { let data: BotList if(!ctx.query.page) ctx.query.page = '1' - const validate = await PageCount.validate(ctx.query.page).then(el => el).catch(() => null) + const validate = await SearchQuerySchema.validate(ctx.query).then(el => el).catch(() => null) if(!validate || isNaN(Number(ctx.query.page))) data = null - else data = await get.list.search.load(JSON.stringify({ query: ctx.query.query, page: ctx.query.page })) + else data = await get.list.search.load(JSON.stringify({ query: ctx.query.q, page: ctx.query.page })) return { props: { @@ -58,7 +65,7 @@ interface Context extends NextPageContext { } interface URLQuery extends ParsedUrlQuery { - query: string + q: string page?: string }