import { Button } from '@heroui/button' import { CardBody, CardHeader } from '@heroui/card' import { Image } from '@heroui/image' import { Input } from '@heroui/input' import { useLocalStorage } from '@uidotdev/usehooks' import { useEffect, useState } from 'react' import { toast } from 'react-hot-toast' import { IoKeyOutline } from 'react-icons/io5' import { useNavigate } from 'react-router-dom' import key from '@/const/key' import HoverEffectCard from '@/components/effect_card' import { title } from '@/components/primitives' import { ThemeSwitch } from '@/components/theme-switch' import logo from '@/assets/images/logo.png' import WebUIManager from '@/controllers/webui_manager' import PureLayout from '@/layouts/pure' export default function WebLoginPage() { const urlSearchParams = new URLSearchParams(window.location.search) const token = urlSearchParams.get('token') const navigate = useNavigate() const [tokenValue, setTokenValue] = useState(token || '') const [isLoading, setIsLoading] = useState(false) const [, setLocalToken] = useLocalStorage(key.token, '') const onSubmit = async () => { if (!tokenValue) { toast.error('请输入token') return } setIsLoading(true) try { const data = await WebUIManager.loginWithToken(tokenValue) if (data) { setLocalToken(data) navigate('/qq_login', { replace: true }) } } catch (error) { toast.error((error as Error).message) } finally { setIsLoading(false) } } useEffect(() => { if (token) { onSubmit() } }, []) return ( <> WebUI登录 - NapCat WebUI
logo
Web  Login 
} value={tokenValue} onChange={(e) => setTokenValue(e.target.value)} onClear={() => setTokenValue('')} />
) }