diff --git a/src/settings/suggesters/FileSuggest.ts b/src/settings/suggesters/FileSuggest.ts index f3c7b48..1caa448 100644 --- a/src/settings/suggesters/FileSuggest.ts +++ b/src/settings/suggesters/FileSuggest.ts @@ -1,20 +1,13 @@ -import type { TAbstractFile } from 'obsidian'; import { AbstractInputSuggest, TFile } from 'obsidian'; export class FileSuggest extends AbstractInputSuggest { protected getSuggestions(query: string): TFile[] | Promise { - const abstractFiles = this.app.vault.getAllLoadedFiles(); - const files: TFile[] = []; const lowerCaseInputStr = query.toLowerCase(); - abstractFiles.forEach((file: TAbstractFile) => { - // Match against full path instead of just name - if (file instanceof TFile && file.path.toLowerCase().contains(lowerCaseInputStr)) { - files.push(file); - } - }); - - return files; + // we do two filters because otherwise TS type inference does convert the array to TFile[] + return this.app.vault.getAllLoadedFiles() + .filter(file => file instanceof TFile) + .filter(file => file.path.toLowerCase().contains(lowerCaseInputStr)); } renderSuggestion(value: TFile, el: HTMLElement): void { diff --git a/src/settings/suggesters/FolderSuggest.ts b/src/settings/suggesters/FolderSuggest.ts index 37bb8ca..183a2cd 100644 --- a/src/settings/suggesters/FolderSuggest.ts +++ b/src/settings/suggesters/FolderSuggest.ts @@ -1,19 +1,13 @@ -import type { TAbstractFile } from 'obsidian'; import { AbstractInputSuggest, TFolder } from 'obsidian'; export class FolderSuggest extends AbstractInputSuggest { protected getSuggestions(query: string): TFolder[] | Promise { - const abstractFiles = this.app.vault.getAllLoadedFiles(); - const folders: TFolder[] = []; const lowerCaseInputStr = query.toLowerCase(); - abstractFiles.forEach((folder: TAbstractFile) => { - if (folder instanceof TFolder && folder.path.toLowerCase().contains(lowerCaseInputStr)) { - folders.push(folder); - } - }); - - return folders; + // we do two filters because otherwise TS type inference does convert the array to TFolder[] + return this.app.vault.getAllLoadedFiles() + .filter(file => file instanceof TFolder) + .filter(file => file.path.toLowerCase().contains(lowerCaseInputStr)); } renderSuggestion(value: TFolder, el: HTMLElement): void {