Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
This commit is contained in:
gpt-engineer-app[bot]
2026-05-15 11:49:13 +00:00
parent 0566a6a36b
commit a90fdbf364
+24 -2
View File
@@ -44,7 +44,22 @@ const Viewer = () => {
toast.error('Formato inválido. Selecione .GLB, .OBJ, .STL ou .IFC'); toast.error('Formato inválido. Selecione .GLB, .OBJ, .STL ou .IFC');
return; return;
} }
const sizeCheck = validateModelFile(file.name, file.size, ext);
if (!sizeCheck.ok) {
toast.error(sizeCheck.reason!);
return;
}
if (ext === 'glb') { if (ext === 'glb') {
try {
const head = await file.slice(0, 16).arrayBuffer();
const sig = validateModelFile(file.name, file.size, ext, head);
if (!sig.ok) {
toast.error(sig.reason!);
return;
}
} catch (err) {
console.error('[upload] header read failed', err);
}
const url = URL.createObjectURL(file); const url = URL.createObjectURL(file);
addModel({ fileName: file.name, fileSize: file.size, url }); addModel({ fileName: file.name, fileSize: file.size, url });
toast.success(`"${file.name}" adicionado à cena`); toast.success(`"${file.name}" adicionado à cena`);
@@ -53,6 +68,12 @@ const Viewer = () => {
setConverting(true); setConverting(true);
try { try {
const buffer = await file.arrayBuffer(); const buffer = await file.arrayBuffer();
const sig = validateModelFile(file.name, file.size, ext, buffer);
if (!sig.ok) {
toast.error(sig.reason!);
if (sig.detail) console.warn('[validateModelFile]', sig.detail);
return;
}
const result = ext === 'ifc' const result = ext === 'ifc'
? await convertIFCtoGLB(buffer, file.name) ? await convertIFCtoGLB(buffer, file.name)
: await convertToGLB(buffer, ext, file.name); : await convertToGLB(buffer, ext, file.name);
@@ -60,8 +81,9 @@ const Viewer = () => {
addModel({ fileName: result.fileName, fileSize: result.fileSize, url }); addModel({ fileName: result.fileName, fileSize: result.fileSize, url });
toast.success(`"${file.name}" convertido e adicionado!`); toast.success(`"${file.name}" convertido e adicionado!`);
} catch (err) { } catch (err) {
console.error(err); console.error('[upload] conversion failed', err);
toast.error(`Falha ao converter "${file.name}"`); const msg = err instanceof Error ? err.message : 'erro desconhecido';
toast.error(`Falha ao converter "${file.name}": ${msg}`);
} finally { } finally {
setConverting(false); setConverting(false);
} }