Changes
Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
This commit is contained in:
+24
-2
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user