Store main file name in error if it's present.

This commit is contained in:
kovacsv 2022-01-21 18:46:54 +01:00
parent 7894093022
commit 528541cfd4
3 changed files with 31 additions and 17 deletions

View File

@ -33,10 +33,11 @@ export const ImportErrorCode =
export class ImportError export class ImportError
{ {
constructor (code, message) constructor (code)
{ {
this.code = 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); let importableFiles = this.GetImportableFiles (this.fileList);
if (importableFiles.length === 0) { if (importableFiles.length === 0) {
callbacks.onImportError (new ImportError (ImportErrorCode.NoImportableFile, null)); callbacks.onImportError (new ImportError (ImportErrorCode.NoImportableFile));
return; return;
} }
@ -183,7 +184,7 @@ export class Importer
let fileNames = importableFiles.map (importableFile => importableFile.file.name); let fileNames = importableFiles.map (importableFile => importableFile.file.name);
callbacks.onSelectMainFile (fileNames, (mainFileIndex) => { callbacks.onSelectMainFile (fileNames, (mainFileIndex) => {
if (mainFileIndex === null) { if (mainFileIndex === null) {
callbacks.onImportError (new ImportError (ImportErrorCode.NoImportableFile, null)); callbacks.onImportError (new ImportError (ImportErrorCode.NoImportableFile));
return; return;
} }
RunTaskAsync (() => { RunTaskAsync (() => {
@ -197,7 +198,11 @@ export class Importer
ImportLoadedMainFile (mainFile, settings, callbacks) ImportLoadedMainFile (mainFile, settings, callbacks)
{ {
if (mainFile === null || mainFile.file === null || mainFile.file.content === null) { 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; return;
} }
@ -242,8 +247,10 @@ export class Importer
callbacks.onImportSuccess (result); callbacks.onImportSuccess (result);
}, },
onError : () => { onError : () => {
let message = importer.GetErrorMessage (); let error = new ImportError (ImportErrorCode.ImportFailed);
callbacks.onImportError (new ImportError (ImportErrorCode.ImportFailed, message)); error.mainFile = mainFile.file.name;
error.message = importer.GetErrorMessage ();
callbacks.onImportError (error);
}, },
onComplete : () => { onComplete : () => {
importer.Clear (); importer.Clear ();

View File

@ -394,6 +394,10 @@ export class Website
onError : (importError) => onError : (importError) =>
{ {
this.SetUIState (WebsiteUIState.Intro); this.SetUIState (WebsiteUIState.Intro);
let extensionStr = null;
if (importError.mainFile !== null) {
extensionStr = GetFileExtension (importError.mainFile);
} else {
let extensions = []; let extensions = [];
let importer = this.modelLoaderUI.GetImporter (); let importer = this.modelLoaderUI.GetImporter ();
let fileList = importer.GetFileList ().GetFiles (); let fileList = importer.GetFileList ().GetFiles ();
@ -401,13 +405,14 @@ export class Website
let extension = fileList[i].extension; let extension = fileList[i].extension;
extensions.push (extension); extensions.push (extension);
} }
let extensionsStr = extensions.join (','); extensionStr = extensions.join (',');
}
if (importError.code === ImportErrorCode.NoImportableFile) { if (importError.code === ImportErrorCode.NoImportableFile) {
HandleEvent ('no_importable_file', extensionsStr); HandleEvent ('no_importable_file', extensionStr);
} else if (importError.code === ImportErrorCode.FailedToLoadFile) { } else if (importError.code === ImportErrorCode.FailedToLoadFile) {
HandleEvent ('failed_to_load_file', extensionsStr); HandleEvent ('failed_to_load_file', extensionStr);
} else if (importError.code === ImportErrorCode.ImportFailed) { } else if (importError.code === ImportErrorCode.ImportFailed) {
HandleEvent ('import_failed', extensionsStr, { HandleEvent ('import_failed', extensionStr, {
error_message : importError.message error_message : importError.message
}); });
} }

View File

@ -50,6 +50,7 @@ describe ('Importer Test', function () {
}, },
error : function (importer, importError) { error : function (importer, importError) {
assert.strictEqual (importError.code, OV.ImportErrorCode.FailedToLoadFile); assert.strictEqual (importError.code, OV.ImportErrorCode.FailedToLoadFile);
assert.strictEqual (importError.mainFile, 'missing.obj');
done (); done ();
} }
}); });
@ -80,6 +81,7 @@ describe ('Importer Test', function () {
}, },
error : function (importer, importError) { error : function (importer, importError) {
assert.strictEqual (importError.code, OV.ImportErrorCode.ImportFailed); assert.strictEqual (importError.code, OV.ImportErrorCode.ImportFailed);
assert.strictEqual (importError.mainFile, 'wrong.3ds');
done (); done ();
} }
}); });