'use client' import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { BlogPermission } from "@/lib/types/Blog.Permission.enum"; import { useState } from "react"; import { toast } from "sonner"; import { BlogPermissionCheckBoxs } from "./BlogPermissionCheckBoxs"; import { AdminAPI } from "@/lib/api/client"; interface AddBlogProps { children: React.ReactNode; onRefresh: () => void; } export default function AddBlog({ children, onRefresh }: AddBlogProps) { const [open, setOpen] = useState(false); const [blog, setBlog] = useState({ title: "", description: "", contentUrl: "", permissions: [] as BlogPermission[], password: "", }); const handleSubmit = async () => { try { const res = await AdminAPI.createBlog({ ...blog, }); if (res) { setOpen(false); onRefresh(); toast.success("添加成功"); setBlog({ title: '', description: '', contentUrl: '', permissions: [], password: '', }) } else { throw new Error(); } } catch (error) { toast.error((error as Error).message || "添加失败"); } } return ( {children} 添加博客 保存前请确认博客信息填写正确、权限配置合理
setBlog({ ...blog, title: e.target.value })} />
setBlog({ ...blog, description: e.target.value })} />
setBlog({ ...blog, contentUrl: e.target.value })} />
{ setBlog({ ...blog, permissions: n ? [...blog.permissions, p] : [...blog.permissions].filter(p => p !== p), })} /> }
{ blog.permissions.includes(BlogPermission.ByPassword) &&
setBlog({ ...blog, password: e.target.value })} />
}
) }