diff --git a/src/utils/MediaTypeManager.ts b/src/utils/MediaTypeManager.ts index d94c1ec..57dfa9f 100644 --- a/src/utils/MediaTypeManager.ts +++ b/src/utils/MediaTypeManager.ts @@ -65,7 +65,8 @@ export class MediaTypeManager { } getFileName(mediaTypeModel: MediaTypeModel): string { - return replaceTags(this.mediaFileNameTemplateMap.get(mediaTypeModel.getMediaType()), mediaTypeModel); + // Ignore undefined tags since some search APIs do not return all properties in the model and produce clean file names even if errors occur + return replaceTags(this.mediaFileNameTemplateMap.get(mediaTypeModel.getMediaType()), mediaTypeModel, true); } async getTemplate(mediaTypeModel: MediaTypeModel, app: App): Promise { diff --git a/src/utils/Utils.ts b/src/utils/Utils.ts index 4833143..64bf0a5 100644 --- a/src/utils/Utils.ts +++ b/src/utils/Utils.ts @@ -22,11 +22,11 @@ export function replaceIllegalFileNameCharactersInString(string: string): string return string.replace(/[\\,#%&{}/*<>$"@.?]*/g, '').replace(/:+/g, ' -'); } -export function replaceTags(template: string, mediaTypeModel: MediaTypeModel): string { - return template.replace(new RegExp('{{.*?}}', 'g'), (match: string) => replaceTag(match, mediaTypeModel)); +export function replaceTags(template: string, mediaTypeModel: MediaTypeModel, ignoreUndefined: boolean = false): string { + return template.replace(new RegExp('{{.*?}}', 'g'), (match: string) => replaceTag(match, mediaTypeModel, ignoreUndefined)); } -function replaceTag(match: string, mediaTypeModel: MediaTypeModel): string { +function replaceTag(match: string, mediaTypeModel: MediaTypeModel, ignoreUndefined: boolean): string { let tag = match; tag = tag.substring(2); tag = tag.substring(0, tag.length - 2); @@ -39,7 +39,7 @@ function replaceTag(match: string, mediaTypeModel: MediaTypeModel): string { const obj = traverseMetaData(path, mediaTypeModel); if (obj === undefined) { - return '{{ INVALID TEMPLATE TAG - object undefined }}'; + return ignoreUndefined ? '' : '{{ INVALID TEMPLATE TAG - object undefined }}'; } return obj; @@ -51,7 +51,7 @@ function replaceTag(match: string, mediaTypeModel: MediaTypeModel): string { const obj = traverseMetaData(path, mediaTypeModel); if (obj === undefined) { - return '{{ INVALID TEMPLATE TAG - object undefined }}'; + return ignoreUndefined ? '' : '{{ INVALID TEMPLATE TAG - object undefined }}'; } if (operator === 'LIST') {