Changes
Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
This commit is contained in:
+31
-2
@@ -37,7 +37,29 @@ const Index = () => {
|
||||
return;
|
||||
}
|
||||
|
||||
// Pré-validação rápida (tamanho) antes de ler o arquivo inteiro na memória
|
||||
const sizeCheck = validateModelFile(file.name, file.size, ext);
|
||||
if (!sizeCheck.ok) {
|
||||
toast.error(sizeCheck.reason!);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ext === 'glb') {
|
||||
// Para GLB, valida a assinatura antes de criar o objectURL
|
||||
try {
|
||||
const head = await file.slice(0, 16).arrayBuffer();
|
||||
const headBuf = new ArrayBuffer(file.size);
|
||||
// Para validar assinatura precisamos só do header — slice já basta
|
||||
const sigCheck = validateModelFile(file.name, file.size, ext, head);
|
||||
if (!sigCheck.ok) {
|
||||
toast.error(sigCheck.reason!);
|
||||
if (sigCheck.detail) console.warn('[validateModelFile]', sigCheck.detail);
|
||||
return;
|
||||
}
|
||||
void headBuf;
|
||||
} catch (err) {
|
||||
console.error('[upload] header read failed', err);
|
||||
}
|
||||
const url = URL.createObjectURL(file);
|
||||
addModel({ fileName: file.name, fileSize: file.size, url });
|
||||
toast.success(`Modelo "${file.name}" carregado com sucesso!`);
|
||||
@@ -48,6 +70,12 @@ const Index = () => {
|
||||
setConverting(true);
|
||||
try {
|
||||
const buffer = await file.arrayBuffer();
|
||||
const sigCheck = validateModelFile(file.name, file.size, ext, buffer);
|
||||
if (!sigCheck.ok) {
|
||||
toast.error(sigCheck.reason!);
|
||||
if (sigCheck.detail) console.warn('[validateModelFile]', sigCheck.detail);
|
||||
return;
|
||||
}
|
||||
let result;
|
||||
if (ext === 'ifc') {
|
||||
result = await convertIFCtoGLB(buffer, file.name);
|
||||
@@ -58,8 +86,9 @@ const Index = () => {
|
||||
addModel({ fileName: result.fileName, fileSize: result.fileSize, url });
|
||||
toast.success(`"${file.name}" convertido para GLB e carregado!`);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
toast.error(`Falha ao converter "${file.name}"`);
|
||||
console.error('[upload] conversion failed', err);
|
||||
const msg = err instanceof Error ? err.message : 'erro desconhecido';
|
||||
toast.error(`Falha ao converter "${file.name}": ${msg}`);
|
||||
} finally {
|
||||
setConverting(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user