From 06946c73daca831a726ae47bc91103de3afbbbca Mon Sep 17 00:00:00 2001 From: Kelvin John Falk Szolnoky Date: Thu, 28 Dec 2023 11:54:29 +0100 Subject: [PATCH] fix: use file path instead of filename for finding templates --- src/settings/suggesters/FileSuggest.ts | 4 ++-- src/utils/MediaTypeManager.ts | 24 +++++++++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/settings/suggesters/FileSuggest.ts b/src/settings/suggesters/FileSuggest.ts index 8da7802..49275ab 100644 --- a/src/settings/suggesters/FileSuggest.ts +++ b/src/settings/suggesters/FileSuggest.ts @@ -17,11 +17,11 @@ export class FileSuggest extends TextInputSuggest { } renderSuggestion(file: TFile, el: HTMLElement): void { - el.setText(file.name); + el.setText(file.path); } selectSuggestion(file: TFile): void { - this.inputEl.value = file.name; + this.inputEl.value = file.path; this.inputEl.trigger('input'); this.close(); } diff --git a/src/utils/MediaTypeManager.ts b/src/utils/MediaTypeManager.ts index d94c1ec..e72e539 100644 --- a/src/utils/MediaTypeManager.ts +++ b/src/utils/MediaTypeManager.ts @@ -69,22 +69,28 @@ export class MediaTypeManager { } async getTemplate(mediaTypeModel: MediaTypeModel, app: App): Promise { - const templateFileName = this.mediaTemplateMap.get(mediaTypeModel.getMediaType()); + const templateFilePath = this.mediaTemplateMap.get(mediaTypeModel.getMediaType()); - if (!templateFileName) { + if (!templateFilePath) { return ''; } - const templateFile: TFile = app.vault - .getFiles() - .filter((f: TFile) => f.name === templateFileName) - .first(); + let templateFile = app.vault.getAbstractFileByPath(templateFilePath); - if (!templateFile) { - return ''; + // WARNING: This was previously selected by filename, but that could lead to collisions and unwanted effects. + // This now falls back to the previous method if no file is found + if (!templateFile || templateFile instanceof TFolder) { + templateFile = app.vault + .getFiles() + .filter((f: TFile) => f.name === templateFilePath) + .first(); + + if (!templateFile) { + return ''; + } } - const template = await app.vault.cachedRead(templateFile); + const template = await app.vault.cachedRead(templateFile as TFile); // console.log(template); return replaceTags(template, mediaTypeModel); }