import React, { useMemo } from 'react' import { Button, useTheme, Select, Spacer, Themes, useAllThemes } from 'components' import { useConfigs } from 'lib/config-context' import useLocale from 'lib/use-locale' import Router, { useRouter } from 'next/router' import MoonIcon from '@geist-ui/react-icons/moon' import SunIcon from '@geist-ui/react-icons/sun' import UserIcon from '@geist-ui/react-icons/user' import { CHINESE_LANGUAGE_IDENT, CUSTOM_THEME_TYPE, ENGLISH_LANGUAGE_IDENT, GITHUB_URL, } from 'lib/constants' const Controls: React.FC = React.memo(() => { const theme = useTheme() const { themes } = useAllThemes() const { switchTheme, updateChineseState } = useConfigs() const { pathname } = useRouter() const { locale } = useLocale() const isChinese = useMemo(() => locale === CHINESE_LANGUAGE_IDENT, [locale]) const nextLocalePath = useMemo(() => { const nextLocale = isChinese ? ENGLISH_LANGUAGE_IDENT : CHINESE_LANGUAGE_IDENT return pathname.replace(locale, nextLocale) }, [locale, pathname]) const hasCustomTheme = useMemo(() => Themes.hasUserCustomTheme(themes), [themes]) const switchThemes = (type: string) => { switchTheme(type) if (typeof window === 'undefined' || !window.localStorage) return window.localStorage.setItem('theme', type) } const switchLanguages = () => { updateChineseState(!isChinese) Router.push(nextLocalePath) } const redirectGithub = () => { if (typeof window === 'undefined') return window.open(GITHUB_URL) } return (
) }) export default Controls