import Head from 'next/head' import App, { AppContext, AppProps } from 'next/app' import dynamic from 'next/dynamic' import { Router, useRouter } from 'next/router' import { useEffect, useState } from 'react' import { DefaultSeo } from 'next-seo' import { GlobalHotKeys } from 'react-hotkeys' import NProgress from 'nprogress' import Package from '../package.json' import ReactGA from 'react-ga' import Logger from '@utils/Logger' import { handlePWA, parseCookie, parseDockerhubTag, systemTheme } from '@utils/Tools' import { DESCRIPTION, shortcutKeyMap, THEME_COLOR, TITLE } from '@utils/Constants' import { Theme } from '@types' const Footer = dynamic(() => import('@components/Footer')) const Navbar = dynamic(() => import('@components/Navbar')) const Modal = dynamic(() => import('@components/Modal')) import '../app.css' import '../github-markdown.css' import 'rc-tooltip/assets/bootstrap_white.css' import '@fortawesome/fontawesome-free/css/all.css' import PlatformDisplay from '@components/PlatformDisplay' // Progress Bar NProgress.configure({ showSpinner: false }) Router.events.on('routeChangeStart', NProgress.start) Router.events.on('routeChangeComplete', NProgress.done) Router.events.on('routeChangeError', NProgress.done) // Google Analytics ReactGA.initialize('UA-165454387-1') const KoreanbotsApp = ({ Component, pageProps, err, cookie }: KoreanbotsProps): JSX.Element => { const [shortcutModal, setShortcutModal] = useState(false) const [theme, setTheme] = useState('system') const [standalone, setStandalone] = useState(false) const router = useRouter() useEffect(() => { console.log( '%c' + 'KOREANBOTS', 'color: #3366FF; -webkit-text-stroke: 2px black; font-size: 72px; font-weight: bold;' ) Logger.debug( `[BUILD INFO] Tag: ${parseDockerhubTag(process.env.NEXT_PUBLIC_TAG)}, Version: v${ Package.version }, Hash: ${process.env.NEXT_PUBLIC_SOURCE_COMMIT}` ) console.log( '%c' + '이곳에 코드를 붙여넣으면 공격자에게 엑세스 토큰을 넘겨줄 수 있습니다!!', 'color: #ff0000; font-size: 20px; font-weight: bold;' ) if (!localStorage.theme) { Logger.debug(`[THEME] ${systemTheme().toUpperCase()} THEME DETECTED`) setTheme(systemTheme()) } else setTheme(localStorage.theme) setStandalone(handlePWA()) const script = document.querySelector('script[src*=googlesyndication]') if (script) script.addEventListener('error', () => { ReactGA.ga( 'send', 'event', 'adblock', 'adblock_' + (navigator.userAgent.match( /Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile|WPDesktop/i ) ? 'mobile' : 'pc') ) }) }, []) return (
{/* META */} {/* Android */} {/* iOS */} {/* Windows */} {/* Pinned Sites */} {/* Tap highlighting */} {/* UC Mobile Browser */}
{!router.pathname.startsWith('/developers') &&
) } KoreanbotsApp.getInitialProps = async (appCtx: AppContext) => { const appProps = await App.getInitialProps(appCtx) const parsed = parseCookie(appCtx.ctx.req) return { ...appProps, cookie: parsed, } } export default KoreanbotsApp interface KoreanbotsProps extends AppProps { err: unknown cookie: { token?: string } }