import { zodResolver } from '@hookform/resolvers/zod'; import { Globe, KeyRound } from 'lucide-react-native'; import { Controller, useForm } from 'react-hook-form'; import { Pressable, Text, TextInput, View } from 'react-native'; import { z } from 'zod'; import { ListCard } from '@/src/components/list-card'; import { ScreenShell } from '@/src/components/screen-shell'; import { adminConfigState, saveAdminConfig } from '@/src/store/admin-config'; const { useSnapshot } = require('valtio/react'); const schema = z.object({ baseUrl: z.string().min(1, '请输入 Host'), adminApiKey: z.string().min(1, '请输入 Admin Token'), }); type FormValues = z.infer; export default function LoginScreen() { const config = useSnapshot(adminConfigState); const { control, handleSubmit, formState } = useForm({ resolver: zodResolver(schema), defaultValues: { baseUrl: config.baseUrl, adminApiKey: config.adminApiKey, }, }); return ( ( )} /> ( )} /> {(formState.errors.baseUrl || formState.errors.adminApiKey) ? ( {formState.errors.baseUrl?.message || formState.errors.adminApiKey?.message} ) : null} { await saveAdminConfig(values); })} > {config.saving ? '登录中...' : '进入管理台'} ); }