修改一些bug

This commit is contained in:
2025-11-03 15:07:20 +08:00
parent d1a1a563c2
commit 09f6a0176a
2 changed files with 65 additions and 61 deletions

View File

@@ -205,37 +205,6 @@ export default function Home() {
}
};
const triggerBrowserDownload = async (
downloadUrl: string,
filename?: string
) => {
try {
const response = await fetch(downloadUrl, {
mode: "cors",
credentials: "omit",
});
if (!response.ok) {
throw new Error(`文件获取失败,状态码 ${response.status.toString()}`);
}
const blob = await response.blob();
const objectUrl = URL.createObjectURL(blob);
const anchor = document.createElement("a");
anchor.href = objectUrl;
anchor.download = filename ?? "download";
anchor.rel = "noopener";
anchor.style.display = "none";
document.body.appendChild(anchor);
anchor.click();
document.body.removeChild(anchor);
URL.revokeObjectURL(objectUrl);
} catch (error) {
const message =
error instanceof Error ? error.message : "无法保存文件,请重试。";
// 仅在控制台输出,避免覆盖成功状态。用户可重新触发下载。
console.error("[download]", message);
}
};
return (
<main className="min-h-screen bg-gradient-to-br from-zinc-50 via-white to-zinc-100 py-16 px-4 font-sans text-zinc-900 dark:from-black dark:via-zinc-950 dark:to-black dark:text-zinc-100">
<div className="mx-auto flex w-full max-w-4xl flex-col gap-8">
@@ -245,7 +214,7 @@ export default function Home() {
Video Fetcher
</span>
<h1 className="text-3xl font-semibold tracking-tight md:text-4xl">
YTB视频下载服
</h1>
<p className="max-w-2xl text-base text-zinc-600 dark:text-zinc-400">
@@ -329,18 +298,14 @@ export default function Home() {
</span>
<span></span>
{downloads[DEFAULT_DOWNLOAD_KEY]?.status === "success" ? (
<button
type="button"
onClick={() => {
void triggerBrowserDownload(
downloads[DEFAULT_DOWNLOAD_KEY].url,
downloads[DEFAULT_DOWNLOAD_KEY].file
);
}}
className="w-fit text-left text-sm font-medium text-zinc-900 underline underline-offset-4 transition hover:text-zinc-700 dark:text-zinc-200 dark:hover:text-zinc-50"
<a
href={downloads[DEFAULT_DOWNLOAD_KEY].url}
target="_blank"
rel="noopener"
className="w-fit truncate text-left text-sm font-medium text-zinc-900 underline underline-offset-4 transition hover:text-zinc-700 dark:text-zinc-200 dark:hover:text-zinc-50"
>
{downloads[DEFAULT_DOWNLOAD_KEY].file}
</button>
</a>
) : null}
{downloads[DEFAULT_DOWNLOAD_KEY]?.status === "error" ? (
<span className="text-sm text-red-500">
@@ -450,18 +415,14 @@ export default function Home() {
: "下载"}
</button>
{downloadState.status === "success" ? (
<button
type="button"
onClick={() => {
void triggerBrowserDownload(
downloadState.url,
downloadState.file
);
}}
<a
href={downloadState.url}
target="_blank"
rel="noopener"
className="truncate text-left text-xs font-medium text-zinc-900 underline underline-offset-4 transition hover:text-zinc-700 dark:text-zinc-200 dark:hover:text-zinc-50"
>
{downloadState.file}
</button>
</a>
) : null}
{downloadState.status === "error" ? (
<span className="text-xs text-red-500">