diff --git a/components/NSFW.tsx b/components/NSFW.tsx new file mode 100644 index 0000000..4b6100b --- /dev/null +++ b/components/NSFW.tsx @@ -0,0 +1,24 @@ +import dynamic from 'next/dynamic' + +const Button = dynamic(() => import('@components/Button')) +const Container = dynamic(() => import('@components/Container')) + +const NSFW = ({ onClick }:NSFWProps): JSX.Element => { + return +
+
+

해당 컨텐츠는 만19세 이상의 성인만 열람할 수 있습니다.

+

계속하시겠습니까?

+ +
+
+
+} + +interface NSFWProps { + onClick(): void +} + +export default NSFW \ No newline at end of file diff --git a/pages/bots/[id]/index.tsx b/pages/bots/[id]/index.tsx index 0506973..04ae3bc 100644 --- a/pages/bots/[id]/index.tsx +++ b/pages/bots/[id]/index.tsx @@ -34,10 +34,12 @@ const Message = dynamic(() => import('@components/Message')) const Button = dynamic(() => import('@components/Button')) const TextArea = dynamic(() => import('@components/Form/TextArea')) const Modal = dynamic(() => import('@components/Modal')) +const NSFW = dynamic(() => import('@components/NSFW')) const Bots: NextPage = ({ data, date, user, theme, csrfToken }) => { const bg = checkBotFlag(data?.flags, 'trusted') && data?.banner const router = useRouter() + const [ nsfw, setNSFW ] = useState(localStorage.nsfw) const [ reportModal, setReportModal ] = useState(false) const [ reportRes, setReportRes ] = useState>(null) function toLogin() { @@ -63,7 +65,10 @@ const Bots: NextPage = ({ data, date, user, theme, csrfToken }) => {

해당 봇은 관리자에 의해 삭제되었습니다.

- : <> + : data.category.includes('NSFW') && !nsfw ? { + localStorage.nsfw = true + setNSFW(true) + }} /> : <>
{ data.state === 'private' ? @@ -113,7 +118,7 @@ const Bots: NextPage = ({ data, date, user, theme, csrfToken }) => { newTab href={ data.url || - `https://discordapp.com/oauth2/authorize?client_id=${data.id}&scope=bot&permissions=0` + `https://discordapp.com/oauth2/authorize?client_id=${data.id}&scope=bot&permissions=0` } >

@@ -190,7 +195,7 @@ const Bots: NextPage = ({ data, date, user, theme, csrfToken }) => { else setReportModal(true) }} aria-hidden='true'> - 신고하기 + 신고하기 { setReportModal(false) @@ -258,7 +263,7 @@ const Bots: NextPage = ({ data, date, user, theme, csrfToken }) => { href={`https://discord.gg/${data.discord}`} > - 디스코드 서버 + 디스코드 서버 )} {data.web && ( @@ -269,7 +274,7 @@ const Bots: NextPage = ({ data, date, user, theme, csrfToken }) => { href={data.web} > - 웹사이트 + 웹사이트 )} {data.git && ( diff --git a/pages/categories/[category].tsx b/pages/categories/[category].tsx index 190fc4a..aed4137 100644 --- a/pages/categories/[category].tsx +++ b/pages/categories/[category].tsx @@ -6,6 +6,7 @@ import { get } from '@utils/Query' import { BotList } from '@types' import { botCategoryListArgumentSchema } from '@utils/Yup' import NotFound from 'pages/404' +import { useState } from 'react' const Hero = dynamic(() => import('@components/Hero')) const Advertisement = dynamic(() => import('@components/Advertisement')) @@ -14,23 +15,29 @@ const ResponsiveGrid = dynamic(() => import('@components/ResponsiveGrid')) const BotCard = dynamic(() => import('@components/BotCard')) const Container = dynamic(() => import('@components/Container')) const Paginator = dynamic(() => import('@components/Paginator')) +const NSFW = dynamic(() => import('@components/NSFW')) const Category: NextPage = ({ data, query }) => { + const [ nsfw, setNSFW ] = useState(localStorage.nsfw) if(!data || data.data.length === 0 || data.totalPage < Number(query.page)) return return <> - - - - - { - data.data.map(bot => ) - } - - - - + { + query.category === 'NSFW' && !nsfw ? { + localStorage.nsfw = true + setNSFW(true) + }} /> : + + + { + data.data.map(bot => ) + } + + + + + } }