From d65de563230eae8c24577bd36fcc95b670e778f4 Mon Sep 17 00:00:00 2001 From: ltctceplrm <14954927+ltctceplrm@users.noreply.github.com> Date: Fri, 28 Nov 2025 15:49:31 +0100 Subject: [PATCH 1/2] Fixed bug with file and folder paths selecting --- src/settings/Settings.ts | 85 ++++++++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 17 deletions(-) diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index 000335a..7a0bac5 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -329,7 +329,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Image folder') .setDesc('Where downloaded images should be stored.') .addSearch(cb => { - new FolderSuggest(this.app, cb.inputEl); + const suggester = new FolderSuggest(this.app, cb.inputEl); + suggester.onSelect((folder, evt) => { + cb.setValue(folder.path); + }); cb.setPlaceholder(DEFAULT_SETTINGS.imageFolder) .setValue(this.plugin.settings.imageFolder) .onChange(data => { @@ -387,7 +390,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Movie folder') .setDesc('Where newly imported movies should be placed.') .addSearch(cb => { - new FolderSuggest(this.app, cb.inputEl); + const suggester = new FolderSuggest(this.app, cb.inputEl); + suggester.onSelect((folder, evt) => { + cb.setValue(folder.path); + }); cb.setPlaceholder(DEFAULT_SETTINGS.movieFolder) .setValue(this.plugin.settings.movieFolder) .onChange(data => { @@ -400,7 +406,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Series folder') .setDesc('Where newly imported series should be placed.') .addSearch(cb => { - new FolderSuggest(this.app, cb.inputEl); + const suggester = new FolderSuggest(this.app, cb.inputEl); + suggester.onSelect((folder, evt) => { + cb.setValue(folder.path); + }); cb.setPlaceholder(DEFAULT_SETTINGS.seriesFolder) .setValue(this.plugin.settings.seriesFolder) .onChange(data => { @@ -413,7 +422,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Comic and manga folder') .setDesc('Where newly imported comics and manga should be placed.') .addSearch(cb => { - new FolderSuggest(this.app, cb.inputEl); + const suggester = new FolderSuggest(this.app, cb.inputEl); + suggester.onSelect((folder, evt) => { + cb.setValue(folder.path); + }); cb.setPlaceholder(DEFAULT_SETTINGS.mangaFolder) .setValue(this.plugin.settings.mangaFolder) .onChange(data => { @@ -426,7 +438,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Game folder') .setDesc('Where newly imported games should be placed.') .addSearch(cb => { - new FolderSuggest(this.app, cb.inputEl); + const suggester = new FolderSuggest(this.app, cb.inputEl); + suggester.onSelect((folder, evt) => { + cb.setValue(folder.path); + }); cb.setPlaceholder(DEFAULT_SETTINGS.gameFolder) .setValue(this.plugin.settings.gameFolder) .onChange(data => { @@ -439,7 +454,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Wiki folder') .setDesc('Where newly imported wiki articles should be placed.') .addSearch(cb => { - new FolderSuggest(this.app, cb.inputEl); + const suggester = new FolderSuggest(this.app, cb.inputEl); + suggester.onSelect((folder, evt) => { + cb.setValue(folder.path); + }); cb.setPlaceholder(DEFAULT_SETTINGS.wikiFolder) .setValue(this.plugin.settings.wikiFolder) .onChange(data => { @@ -452,7 +470,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Music folder') .setDesc('Where newly imported music should be placed.') .addSearch(cb => { - new FolderSuggest(this.app, cb.inputEl); + const suggester = new FolderSuggest(this.app, cb.inputEl); + suggester.onSelect((folder, evt) => { + cb.setValue(folder.path); + }); cb.setPlaceholder(DEFAULT_SETTINGS.musicReleaseFolder) .setValue(this.plugin.settings.musicReleaseFolder) .onChange(data => { @@ -465,7 +486,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Board game folder') .setDesc('Where newly imported board games should be places.') .addSearch(cb => { - new FolderSuggest(this.app, cb.inputEl); + const suggester = new FolderSuggest(this.app, cb.inputEl); + suggester.onSelect((folder, evt) => { + cb.setValue(folder.path); + }); cb.setPlaceholder(DEFAULT_SETTINGS.boardgameFolder) .setValue(this.plugin.settings.boardgameFolder) .onChange(data => { @@ -477,7 +501,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Book folder') .setDesc('Where newly imported books should be placed.') .addSearch(cb => { - new FolderSuggest(this.app, cb.inputEl); + const suggester = new FolderSuggest(this.app, cb.inputEl); + suggester.onSelect((folder, evt) => { + cb.setValue(folder.path); + }); cb.setPlaceholder(DEFAULT_SETTINGS.bookFolder) .setValue(this.plugin.settings.bookFolder) .onChange(data => { @@ -494,7 +521,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Movie template') .setDesc('Template file to be used when creating a new note for a movie.') .addSearch(cb => { - new FileSuggest(this.app, cb.inputEl); + const suggester = new FileSuggest(this.app, cb.inputEl); + suggester.onSelect((file, evt) => { + cb.setValue(file.path); + }); cb.setPlaceholder('Example: movieTemplate.md') .setValue(this.plugin.settings.movieTemplate) .onChange(data => { @@ -507,7 +537,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Series template') .setDesc('Template file to be used when creating a new note for a series.') .addSearch(cb => { - new FileSuggest(this.app, cb.inputEl); + const suggester = new FileSuggest(this.app, cb.inputEl); + suggester.onSelect((file, evt) => { + cb.setValue(file.path); + }); cb.setPlaceholder('Example: seriesTemplate.md') .setValue(this.plugin.settings.seriesTemplate) .onChange(data => { @@ -520,7 +553,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Manga and Comics template') .setDesc('Template file to be used when creating a new note for a manga or a comic.') .addSearch(cb => { - new FileSuggest(this.app, cb.inputEl); + const suggester = new FileSuggest(this.app, cb.inputEl); + suggester.onSelect((file, evt) => { + cb.setValue(file.path); + }); cb.setPlaceholder('Example: mangaTemplate.md') .setValue(this.plugin.settings.mangaTemplate) .onChange(data => { @@ -533,7 +569,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Game template') .setDesc('Template file to be used when creating a new note for a game.') .addSearch(cb => { - new FileSuggest(this.app, cb.inputEl); + const suggester = new FileSuggest(this.app, cb.inputEl); + suggester.onSelect((file, evt) => { + cb.setValue(file.path); + }); cb.setPlaceholder('Example: gameTemplate.md') .setValue(this.plugin.settings.gameTemplate) .onChange(data => { @@ -546,7 +585,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Wiki template') .setDesc('Template file to be used when creating a new note for a wiki entry.') .addSearch(cb => { - new FileSuggest(this.app, cb.inputEl); + const suggester = new FileSuggest(this.app, cb.inputEl); + suggester.onSelect((file, evt) => { + cb.setValue(file.path); + }); cb.setPlaceholder('Example: wikiTemplate.md') .setValue(this.plugin.settings.wikiTemplate) .onChange(data => { @@ -559,7 +601,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Music release template') .setDesc('Template file to be used when creating a new note for a music release.') .addSearch(cb => { - new FileSuggest(this.app, cb.inputEl); + const suggester = new FileSuggest(this.app, cb.inputEl); + suggester.onSelect((file, evt) => { + cb.setValue(file.path); + }); cb.setPlaceholder('Example: musicReleaseTemplate.md') .setValue(this.plugin.settings.musicReleaseTemplate) .onChange(data => { @@ -572,7 +617,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Board game template') .setDesc('Template file to be used when creating a new note for a boardgame.') .addSearch(cb => { - new FileSuggest(this.app, cb.inputEl); + const suggester = new FileSuggest(this.app, cb.inputEl); + suggester.onSelect((file, evt) => { + cb.setValue(file.path); + }); cb.setPlaceholder('Example: boardgameTemplate.md') .setValue(this.plugin.settings.boardgameTemplate) .onChange(data => { @@ -585,7 +633,10 @@ export class MediaDbSettingTab extends PluginSettingTab { .setName('Book template') .setDesc('Template file to be used when creating a new note for a book.') .addSearch(cb => { - new FileSuggest(this.app, cb.inputEl); + const suggester = new FileSuggest(this.app, cb.inputEl); + suggester.onSelect((file, evt) => { + cb.setValue(file.path); + }); cb.setPlaceholder('Example: bookTemplate.md') .setValue(this.plugin.settings.bookTemplate) .onChange(data => { From fed478c150ca8a79e67482172ecd9798b676611f Mon Sep 17 00:00:00 2001 From: ltctceplrm <14954927+ltctceplrm@users.noreply.github.com> Date: Fri, 28 Nov 2025 18:06:12 +0100 Subject: [PATCH 2/2] More fixes Fixed suggestion not saving after being clicked Changed from file name to path to ensure consistency in suggestion, otherwise you had to clear the whole textbox for suggestions to show up --- src/settings/Settings.ts | 51 ++++++++++++++++++++++++++ src/settings/suggesters/FileSuggest.ts | 3 +- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index 7a0bac5..1838026 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -332,6 +332,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FolderSuggest(this.app, cb.inputEl); suggester.onSelect((folder, evt) => { cb.setValue(folder.path); + this.plugin.settings.imageFolder = folder.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder(DEFAULT_SETTINGS.imageFolder) .setValue(this.plugin.settings.imageFolder) @@ -393,6 +396,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FolderSuggest(this.app, cb.inputEl); suggester.onSelect((folder, evt) => { cb.setValue(folder.path); + this.plugin.settings.movieFolder = folder.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder(DEFAULT_SETTINGS.movieFolder) .setValue(this.plugin.settings.movieFolder) @@ -409,6 +415,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FolderSuggest(this.app, cb.inputEl); suggester.onSelect((folder, evt) => { cb.setValue(folder.path); + this.plugin.settings.seriesFolder = folder.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder(DEFAULT_SETTINGS.seriesFolder) .setValue(this.plugin.settings.seriesFolder) @@ -425,6 +434,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FolderSuggest(this.app, cb.inputEl); suggester.onSelect((folder, evt) => { cb.setValue(folder.path); + this.plugin.settings.mangaFolder = folder.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder(DEFAULT_SETTINGS.mangaFolder) .setValue(this.plugin.settings.mangaFolder) @@ -441,6 +453,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FolderSuggest(this.app, cb.inputEl); suggester.onSelect((folder, evt) => { cb.setValue(folder.path); + this.plugin.settings.gameFolder = folder.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder(DEFAULT_SETTINGS.gameFolder) .setValue(this.plugin.settings.gameFolder) @@ -457,6 +472,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FolderSuggest(this.app, cb.inputEl); suggester.onSelect((folder, evt) => { cb.setValue(folder.path); + this.plugin.settings.wikiFolder = folder.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder(DEFAULT_SETTINGS.wikiFolder) .setValue(this.plugin.settings.wikiFolder) @@ -473,6 +491,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FolderSuggest(this.app, cb.inputEl); suggester.onSelect((folder, evt) => { cb.setValue(folder.path); + this.plugin.settings.musicReleaseFolder = folder.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder(DEFAULT_SETTINGS.musicReleaseFolder) .setValue(this.plugin.settings.musicReleaseFolder) @@ -489,6 +510,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FolderSuggest(this.app, cb.inputEl); suggester.onSelect((folder, evt) => { cb.setValue(folder.path); + this.plugin.settings.boardgameFolder = folder.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder(DEFAULT_SETTINGS.boardgameFolder) .setValue(this.plugin.settings.boardgameFolder) @@ -504,6 +528,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FolderSuggest(this.app, cb.inputEl); suggester.onSelect((folder, evt) => { cb.setValue(folder.path); + this.plugin.settings.bookFolder = folder.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder(DEFAULT_SETTINGS.bookFolder) .setValue(this.plugin.settings.bookFolder) @@ -524,6 +551,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FileSuggest(this.app, cb.inputEl); suggester.onSelect((file, evt) => { cb.setValue(file.path); + this.plugin.settings.movieTemplate = file.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder('Example: movieTemplate.md') .setValue(this.plugin.settings.movieTemplate) @@ -540,6 +570,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FileSuggest(this.app, cb.inputEl); suggester.onSelect((file, evt) => { cb.setValue(file.path); + this.plugin.settings.seriesTemplate = file.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder('Example: seriesTemplate.md') .setValue(this.plugin.settings.seriesTemplate) @@ -556,6 +589,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FileSuggest(this.app, cb.inputEl); suggester.onSelect((file, evt) => { cb.setValue(file.path); + this.plugin.settings.mangaTemplate = file.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder('Example: mangaTemplate.md') .setValue(this.plugin.settings.mangaTemplate) @@ -572,6 +608,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FileSuggest(this.app, cb.inputEl); suggester.onSelect((file, evt) => { cb.setValue(file.path); + this.plugin.settings.gameTemplate = file.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder('Example: gameTemplate.md') .setValue(this.plugin.settings.gameTemplate) @@ -588,6 +627,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FileSuggest(this.app, cb.inputEl); suggester.onSelect((file, evt) => { cb.setValue(file.path); + this.plugin.settings.wikiTemplate = file.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder('Example: wikiTemplate.md') .setValue(this.plugin.settings.wikiTemplate) @@ -604,6 +646,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FileSuggest(this.app, cb.inputEl); suggester.onSelect((file, evt) => { cb.setValue(file.path); + this.plugin.settings.musicReleaseTemplate = file.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder('Example: musicReleaseTemplate.md') .setValue(this.plugin.settings.musicReleaseTemplate) @@ -620,6 +665,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FileSuggest(this.app, cb.inputEl); suggester.onSelect((file, evt) => { cb.setValue(file.path); + this.plugin.settings.boardgameTemplate = file.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder('Example: boardgameTemplate.md') .setValue(this.plugin.settings.boardgameTemplate) @@ -636,6 +684,9 @@ export class MediaDbSettingTab extends PluginSettingTab { const suggester = new FileSuggest(this.app, cb.inputEl); suggester.onSelect((file, evt) => { cb.setValue(file.path); + this.plugin.settings.bookTemplate = file.path; + void this.plugin.saveSettings(); + suggester.close(); }); cb.setPlaceholder('Example: bookTemplate.md') .setValue(this.plugin.settings.bookTemplate) diff --git a/src/settings/suggesters/FileSuggest.ts b/src/settings/suggesters/FileSuggest.ts index 0192b73..f3c7b48 100644 --- a/src/settings/suggesters/FileSuggest.ts +++ b/src/settings/suggesters/FileSuggest.ts @@ -8,7 +8,8 @@ export class FileSuggest extends AbstractInputSuggest { const lowerCaseInputStr = query.toLowerCase(); abstractFiles.forEach((file: TAbstractFile) => { - if (file instanceof TFile && file.name.toLowerCase().contains(lowerCaseInputStr)) { + // Match against full path instead of just name + if (file instanceof TFile && file.path.toLowerCase().contains(lowerCaseInputStr)) { files.push(file); } });