From 528541cfd472d9917f46ee69792e8ac76314155d Mon Sep 17 00:00:00 2001 From: kovacsv Date: Fri, 21 Jan 2022 18:46:54 +0100 Subject: [PATCH] Store main file name in error if it's present. --- source/engine/import/importer.js | 21 ++++++++++++++------- source/website/website.js | 25 +++++++++++++++---------- test/tests/importer_test.js | 2 ++ 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/source/engine/import/importer.js b/source/engine/import/importer.js index 7d8bb30..14b8f56 100644 --- a/source/engine/import/importer.js +++ b/source/engine/import/importer.js @@ -33,10 +33,11 @@ export const ImportErrorCode = export class ImportError { - constructor (code, message) + constructor (code) { this.code = code; - this.message = message; + this.mainFile = null; + this.message = null; } } @@ -172,7 +173,7 @@ export class Importer { let importableFiles = this.GetImportableFiles (this.fileList); if (importableFiles.length === 0) { - callbacks.onImportError (new ImportError (ImportErrorCode.NoImportableFile, null)); + callbacks.onImportError (new ImportError (ImportErrorCode.NoImportableFile)); return; } @@ -183,7 +184,7 @@ export class Importer let fileNames = importableFiles.map (importableFile => importableFile.file.name); callbacks.onSelectMainFile (fileNames, (mainFileIndex) => { if (mainFileIndex === null) { - callbacks.onImportError (new ImportError (ImportErrorCode.NoImportableFile, null)); + callbacks.onImportError (new ImportError (ImportErrorCode.NoImportableFile)); return; } RunTaskAsync (() => { @@ -197,7 +198,11 @@ export class Importer ImportLoadedMainFile (mainFile, settings, callbacks) { if (mainFile === null || mainFile.file === null || mainFile.file.content === null) { - callbacks.onImportError (new ImportError (ImportErrorCode.FailedToLoadFile, null)); + let error = new ImportError (ImportErrorCode.FailedToLoadFile); + if (mainFile.file !== null) { + error.mainFile = mainFile.file.name; + } + callbacks.onImportError (error); return; } @@ -242,8 +247,10 @@ export class Importer callbacks.onImportSuccess (result); }, onError : () => { - let message = importer.GetErrorMessage (); - callbacks.onImportError (new ImportError (ImportErrorCode.ImportFailed, message)); + let error = new ImportError (ImportErrorCode.ImportFailed); + error.mainFile = mainFile.file.name; + error.message = importer.GetErrorMessage (); + callbacks.onImportError (error); }, onComplete : () => { importer.Clear (); diff --git a/source/website/website.js b/source/website/website.js index cc81231..9a78a6a 100644 --- a/source/website/website.js +++ b/source/website/website.js @@ -394,20 +394,25 @@ export class Website onError : (importError) => { this.SetUIState (WebsiteUIState.Intro); - let extensions = []; - let importer = this.modelLoaderUI.GetImporter (); - let fileList = importer.GetFileList ().GetFiles (); - for (let i = 0; i < fileList.length; i++) { - let extension = fileList[i].extension; - extensions.push (extension); + let extensionStr = null; + if (importError.mainFile !== null) { + extensionStr = GetFileExtension (importError.mainFile); + } else { + let extensions = []; + let importer = this.modelLoaderUI.GetImporter (); + let fileList = importer.GetFileList ().GetFiles (); + for (let i = 0; i < fileList.length; i++) { + let extension = fileList[i].extension; + extensions.push (extension); + } + extensionStr = extensions.join (','); } - let extensionsStr = extensions.join (','); if (importError.code === ImportErrorCode.NoImportableFile) { - HandleEvent ('no_importable_file', extensionsStr); + HandleEvent ('no_importable_file', extensionStr); } else if (importError.code === ImportErrorCode.FailedToLoadFile) { - HandleEvent ('failed_to_load_file', extensionsStr); + HandleEvent ('failed_to_load_file', extensionStr); } else if (importError.code === ImportErrorCode.ImportFailed) { - HandleEvent ('import_failed', extensionsStr, { + HandleEvent ('import_failed', extensionStr, { error_message : importError.message }); } diff --git a/test/tests/importer_test.js b/test/tests/importer_test.js index bbb0416..0f73b9f 100644 --- a/test/tests/importer_test.js +++ b/test/tests/importer_test.js @@ -50,6 +50,7 @@ describe ('Importer Test', function () { }, error : function (importer, importError) { assert.strictEqual (importError.code, OV.ImportErrorCode.FailedToLoadFile); + assert.strictEqual (importError.mainFile, 'missing.obj'); done (); } }); @@ -80,6 +81,7 @@ describe ('Importer Test', function () { }, error : function (importer, importError) { assert.strictEqual (importError.code, OV.ImportErrorCode.ImportFailed); + assert.strictEqual (importError.mainFile, 'wrong.3ds'); done (); } });