refactor: 调整复制博客URL到通用函数

This commit is contained in:
2025-12-27 13:13:16 +08:00
parent 2c76d1380f
commit a932178509
2 changed files with 38 additions and 25 deletions

View File

@@ -17,6 +17,7 @@ import { useState } from "react";
import { toast } from "sonner";
import { BlogPermissionCheckBoxs } from "./BlogPermissionCheckBoxs";
import { AdminAPI } from "@/lib/api/client";
import { handleCopyShareURL } from "./utils";
interface AddBlogProps {
children: React.ReactNode;
@@ -34,30 +35,6 @@ export default function AddBlog({ children, onRefresh }: AddBlogProps) {
password: "",
});
const handleCopyShareURL = () => {
const slug = blog.slug.trim();
if (slug.length === 0) {
return toast.warning('请先填写Slug')
}
let url = `${window.location.origin}/blog/${slug}`;
const password = blog.password.trim();
if (blog.permissions.includes(BlogPermission.ByPassword)) {
if (password.length === 0) {
return toast.warning('开启了密码保护但没有填写有效的密码无法生成有效URL')
} else {
url += `?p=${blog.password.trim()}`;
}
}
navigator.clipboard.writeText(url).then(() => {
toast.success('复制成功');
}, () => {
toast.error('复制失败,请手动复制');
});
};
const handleSubmit = async () => {
try {
const res = await AdminAPI.createBlog({
@@ -175,7 +152,11 @@ export default function AddBlog({ children, onRefresh }: AddBlogProps) {
</div>
<DialogFooter >
<div className="flex justify-between w-full">
<Button type="button" variant='outline' onClick={handleCopyShareURL}></Button>
<Button type="button" variant='outline' onClick={() => handleCopyShareURL({
slug: blog.slug,
password: blog.password,
permissions: blog.permissions,
})}></Button>
<div>
<Button type="button" variant='secondary' onClick={() => setOpen(false)}></Button>
<Button type="button" onClick={handleSubmit}></Button>

View File

@@ -0,0 +1,32 @@
import { BlogPermission } from "@/lib/types/Blog.Permission.enum";
import { toast } from "sonner";
export function handleCopyShareURL(data: {
slug: string;
password: string;
permissions: BlogPermission[];
}) {
const slug = data.slug.trim();
const password = data.password.trim();
const permissions = data.permissions;
if (slug.length === 0) {
return toast.warning('请先填写Slug')
}
let url = `${window.location.origin}/blog/${slug}`;
if (permissions.includes(BlogPermission.ByPassword)) {
if (password.length === 0) {
return toast.warning('开启了密码保护但无法获取有效的密码无法生成有效URL')
} else {
url += `?p=${password}`;
}
}
navigator.clipboard.writeText(url).then(() => {
toast.success('复制成功');
}, () => {
toast.error('复制失败,请手动复制');
});
};