fix: use server-side fetch for logo save (bypass CORS), detect file MIME on extension

This commit is contained in:
openhands committed 2026-07-03 17:05:25 +02:00
1 parent 6df4fe2ddd
commit 917437c5ef
2 files changed
+44 -19

No files matched your search

+11 -19
View File
@@ -2,7 +2,7 @@
import { useCallback, useMemo, useState, useTransition } from "react";
import { ContentCard } from "@/components/public/ui";
import { saveLogo } from "@/actions/save-logo";
import { saveLogoFromUrl } from "@/actions/save-logo";
import { HABBO_FONT_GROUPS, buildFontUrl } from "@/components/public/habbo-fonts";
export default function LogoGenerator() {
@@ -39,25 +39,17 @@ export default function LogoGenerator() {
window.open(gifUrl, "_blank");
}, [gifUrl]);
const handleSave = useCallback(async () => {
const handleSave = useCallback(() => {
setSaveStatus("saving");
try {
const res = await fetch(gifUrl);
const blob = await res.blob();
const ext = blob.type === "image/gif" ? "gif" : "png";
const file = new File([blob], `logo.${ext}`, { type: blob.type });
const fd = new FormData();
fd.append("file", file);
startTransition(async () => {
const result = await saveLogo(fd);
setSaveStatus(result.success ? "done" : "error");
if (result.success) setTimeout(() => setSaveStatus("idle"), 3000);
});
} catch {
setSaveStatus("error");
setTimeout(() => setSaveStatus("idle"), 3000);
}
startTransition(async () => {
const result = await saveLogoFromUrl(gifUrl);
setSaveStatus(result.success ? "done" : "error");
if (result.success) {
setTimeout(() => setSaveStatus("idle"), 3000);
} else {
setTimeout(() => setSaveStatus("idle"), 3000);
}
});
}, [gifUrl, startTransition]);
return (