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: '올바르지 않은 게이트웨이입니다.'
+}