diff --git a/components/Notice.tsx b/components/Notice.tsx new file mode 100644 index 0000000..63ddb78 --- /dev/null +++ b/components/Notice.tsx @@ -0,0 +1,21 @@ +const Notice = ({ header, desc }:NoticeProps) => { + return ( +
+

KOREANBOTS

+
+
+

{header}

+ +

{desc}

+
+
+
+ ) +} + +export default Notice + +interface NoticeProps { + header: string + desc: string +} \ No newline at end of file diff --git a/pages/404.tsx b/pages/404.tsx index 5f74afb..7386fe5 100644 --- a/pages/404.tsx +++ b/pages/404.tsx @@ -1,12 +1,10 @@ import { NextPage } from 'next' import Container from '../components/Container' +import Notice from '../components/Notice' +import { ErrorText } from '../utils/Constants' const NotFound: NextPage = () => { - return ( - -

Not Found

-
- ) + return } export default NotFound diff --git a/pages/_app.tsx b/pages/_app.tsx index 3ddbb7f..94ec492 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -15,11 +15,10 @@ import 'core-js/es/map' import '../app.css' import '@fortawesome/fontawesome-free/css/all.css' import '../github-markdown.css' - -let systemColor export default function App({ Component, pageProps }: AppProps): JSX.Element { const [ betaKey, setBetaKey ] = useState('') const [ theme, setDefaultTheme ] = useState(undefined) + let systemColor:string useEffect(() => { setBetaKey(localStorage.betaKey) @@ -37,6 +36,7 @@ export default function App({ Component, pageProps }: AppProps): JSX.Element { systemColor = 'dark' } if (!localStorage.theme || !['dark', 'light'].includes(localStorage.theme)) { + console.log(`[THEME] ${systemColor.toUpperCase()} THEME DETECTED`) localStorage.setItem('theme', systemColor) setDefaultTheme(systemColor) } diff --git a/pages/_error.tsx b/pages/_error.tsx new file mode 100644 index 0000000..dd1abca --- /dev/null +++ b/pages/_error.tsx @@ -0,0 +1,34 @@ +import { NextPage, NextPageContext } from 'next' +import Notice from '../components/Notice' +import { ErrorText } from '../utils/Constants' + +const CustomError:NextPage = ({ statusCode, statusText }) => { + return +} + +export const getServerSideProps = ({ res, err }:NextPageContext) => { + let statusCode:number + // If the res variable is defined it means nextjs + // is in server side + if (res) { + statusCode = res.statusCode + } else if (err) { + // if there is any error in the app it should + // return the status code from here + statusCode = err.statusCode + } else { + // Something really bad/weird happen and status code + // cannot be determined. + statusCode = null + } + const statusText:string = ErrorText[statusCode] ?? ErrorText.DEFAULT + return { props: { statusCode, statusText } } +} + +export default CustomError + + +interface ErrorProps { + statusCode: number + statusText: string +} \ No newline at end of file diff --git a/utils/Constants.ts b/utils/Constants.ts index 95ddb96..e014c0d 100644 --- a/utils/Constants.ts +++ b/utils/Constants.ts @@ -105,3 +105,18 @@ export const DiscordEnpoints = { } export const git = { 'github.com': { icon: 'github', text: 'Github' }, 'gitlab.com': { icon: 'gitlab', text: 'Gitlab' }} + +export const ErrorText = { + DEFAULT: '예상치 못한 에러가 발생하였습니다.', + 200: '문제가 없는데 여기를 어떻게 오셨죠?', + 400: '올바르지 않은 요청입니다.', + 401: '로그인이 필요합니다.', + 402: '결제가 필요합니다.', + 403: '권한이 없습니다.', + 404: '페이지가 존재하지 않습니다.', + 405: '해당 요청 방법은 허용되지 않습니다.', + 406: '연결을 받아드릴 수 없습니다.', + 429: '지정된 시간에 너무 많은 요청을 보내셨습니다.', + 500: '서버 내부 오류가 발생하였습니다.', + 502: '올바르지 않은 게이트웨이입니다.' +}