fix: use server-side fetch for logo save (bypass CORS), detect file MIME on extension
This commit is contained in:
1 parent
6df4fe2ddd
commit
917437c5ef
2 files changed
+44
-19
No files matched your search
@@ -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 (
|
||||
|
||||
Reference in new issue
Block a user