import { useEffect, useState } from "react"; import { App, Button, Form, Input, Select, Space, Switch, Tag } from "antd"; import { MailCheck } from "lucide-react"; import { getAdminEmailSetting, updateAdminEmailSetting, type EmailSetting } from "@/services/api/wallet"; import { configuredSecretText, SettingsSectionCard } from "./admin-ui"; type EmailFormValues = Omit; export default function EmailSettingsPanel() { const { message } = App.useApp(); const [setting, setSetting] = useState(null); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [form] = Form.useForm(); useEffect(() => { void getAdminEmailSetting() .then(({ setting: value }) => { setSetting(value); form.setFieldsValue({ ...value, password: "" }); }) .catch((error) => message.error(error instanceof Error ? error.message : "读取邮件配置失败")) .finally(() => setLoading(false)); }, [form, message]); const save = async () => { const values = await form.validateFields(); if (values.enabled && values.username?.trim() && !values.password?.trim() && !setting?.hasPassword) { message.error("启用 SMTP 登录前请填写密码"); return; } setSaving(true); try { const result = await updateAdminEmailSetting({ ...values, password: values.password?.trim() || "" }); setSetting(result.setting); form.setFieldsValue({ ...result.setting, password: "" }); message.success("注册邮件配置已保存"); } catch (error) { message.error(error instanceof Error ? error.message : "保存邮件配置失败"); } finally { setSaving(false); } }; return ( } title="注册验证邮件" description="通过 SMTP 发送普通用户注册验证码。" status={{setting?.enabled ? "已启用" : "未启用"}{setting?.hasPassword ? {configuredSecretText} : null}} footer={<>SMTP 密码使用服务端密钥加密,接口不回显明文。} >
); }