From 94ce26c3e76205ffd96349212445c5a6bd507c37 Mon Sep 17 00:00:00 2001 From: Lost Paul <70213368+LostPaul@users.noreply.github.com> Date: Fri, 30 May 2025 20:47:50 +0200 Subject: [PATCH] Fix show folder note in file explorer command --- src/Commands.ts | 10 +++++----- src/ExcludeFolders/ExcludeFolder.ts | 4 ++-- src/ExcludeFolders/ExcludePattern.ts | 3 ++- src/ExcludeFolders/functions/folderFunctions.ts | 3 +-- src/ExcludeFolders/modals/ExcludeFolderSettings.ts | 13 +++++++++++++ src/ExcludeFolders/modals/PatternSettings.ts | 13 +++++++++++++ src/events/MutationObserver.ts | 2 +- src/events/handleClick.ts | 4 ++-- src/events/handleCreate.ts | 4 ++-- src/events/handleRename.ts | 6 +++--- src/functions/folderNoteFunctions.ts | 2 +- src/functions/styleFunctions.ts | 14 +++++++------- src/main.ts | 2 +- src/settings/SettingsTab.ts | 4 ++-- src/settings/modals/CreateFnForEveryFolder.ts | 2 +- 15 files changed, 56 insertions(+), 30 deletions(-) diff --git a/src/Commands.ts b/src/Commands.ts index b0f9e2a..09ce4af 100644 --- a/src/Commands.ts +++ b/src/Commands.ts @@ -328,9 +328,9 @@ export class Commands { }); } if (!(file instanceof TFolder)) return; - const excludedFolder = await getExcludedFolder(this.plugin, file.path, false); + const excludedFolder = getExcludedFolder(this.plugin, file.path, false); const detachedExcludedFolder = getDetachedFolder(this.plugin, file.path); - if (excludedFolder && !excludedFolder.hideNote) { + if (excludedFolder && !excludedFolder.hideInSettings) { // I'm not sure if I'm ever going to add this because of the possibility that a folder got more than one excluded // subMenu.addItem((item) => { // item.setTitle('Manage excluded folder') @@ -414,13 +414,13 @@ export class Commands { }); if (this.plugin.settings.hideFolderNote) { - if (excludedFolder?.hideNote) { + if (excludedFolder?.showFolderNote) { subMenu.addItem((item) => { item.setTitle('Hide folder note in explorer') .setIcon('eye-off') .onClick(() => { this.plugin.settings.excludeFolders = this.plugin.settings.excludeFolders.filter( - (folder) => (folder.path !== file.path) && folder.hideNote); + (folder) => (folder.path !== file.path) && folder.showFolderNote); this.plugin.saveSettings(false); applyCSSClassesToFolder(file.path, this.plugin); }); @@ -431,7 +431,6 @@ export class Commands { .setIcon('eye') .onClick(() => { const excludedFolder = new ExcludedFolder(file.path, this.plugin.settings.excludeFolders.length, undefined, this.plugin); - excludedFolder.hideNote = true; excludedFolder.subFolders = false; excludedFolder.disableSync = false; excludedFolder.disableAutoCreate = false; @@ -439,6 +438,7 @@ export class Commands { excludedFolder.enableCollapsing = false; excludedFolder.excludeFromFolderOverview = false; excludedFolder.hideInSettings = true; + excludedFolder.showFolderNote = true; addExcludedFolder(this.plugin, excludedFolder, false); applyCSSClassesToFolder(file.path, this.plugin); }); diff --git a/src/ExcludeFolders/ExcludeFolder.ts b/src/ExcludeFolders/ExcludeFolder.ts index 41382f7..ea68226 100644 --- a/src/ExcludeFolders/ExcludeFolder.ts +++ b/src/ExcludeFolders/ExcludeFolder.ts @@ -14,7 +14,7 @@ export class ExcludedFolder { hideInSettings: boolean; detached: boolean; detachedFilePath?: string; - hideNote: boolean; + showFolderNote?: boolean; constructor(path: string, position: number, id: string | undefined, plugin: FolderNotesPlugin) { this.type = 'folder'; this.id = id || crypto.randomUUID(); @@ -28,6 +28,6 @@ export class ExcludedFolder { this.excludeFromFolderOverview = plugin.settings.excludeFolderDefaultSettings.excludeFromFolderOverview; this.string = ''; this.hideInSettings = false; - this.hideNote = false; + this.showFolderNote = plugin.settings.excludeFolderDefaultSettings.showFolderNote; } } diff --git a/src/ExcludeFolders/ExcludePattern.ts b/src/ExcludeFolders/ExcludePattern.ts index fe2cc60..7052895 100644 --- a/src/ExcludeFolders/ExcludePattern.ts +++ b/src/ExcludeFolders/ExcludePattern.ts @@ -14,7 +14,7 @@ export class ExcludePattern { hideInSettings: boolean; detached: boolean; detachedFilePath?: string; - hideNote: boolean; + showFolderNote?: boolean; constructor(pattern: string, position: number, id: string | undefined, plugin: FolderNotesPlugin) { this.type = 'pattern'; this.id = id || crypto.randomUUID(); @@ -28,5 +28,6 @@ export class ExcludePattern { this.excludeFromFolderOverview = plugin.settings.excludePatternDefaultSettings.excludeFromFolderOverview; this.path = ''; this.hideInSettings = false; + this.showFolderNote = plugin.settings.excludePatternDefaultSettings.showFolderNote; } } diff --git a/src/ExcludeFolders/functions/folderFunctions.ts b/src/ExcludeFolders/functions/folderFunctions.ts index cc9e586..cd50446 100644 --- a/src/ExcludeFolders/functions/folderFunctions.ts +++ b/src/ExcludeFolders/functions/folderFunctions.ts @@ -32,8 +32,8 @@ export function getExcludedFolder(plugin: FolderNotesPlugin, path: string, inclu 'excludeFromFolderOverview', 'detached', 'hideInSettings', - 'hideNote', 'id', + 'showFolderNote', ]; if (combinedExcludedFolders.length > 0) { @@ -73,7 +73,6 @@ export function getExcludedFolder(plugin: FolderNotesPlugin, path: string, inclu excludeFromFolderOverview: false, hideInSettings: false, detached: false, - hideNote: false, }; } diff --git a/src/ExcludeFolders/modals/ExcludeFolderSettings.ts b/src/ExcludeFolders/modals/ExcludeFolderSettings.ts index 54020ad..c862e50 100644 --- a/src/ExcludeFolders/modals/ExcludeFolderSettings.ts +++ b/src/ExcludeFolders/modals/ExcludeFolderSettings.ts @@ -54,6 +54,19 @@ export default class ExcludedFolderSettings extends Modal { }) ); + new Setting(contentEl) + .setName('Show folder note in the file explorer') + .setDesc('Choose if the folder note should be shown in the file explorer') + .addToggle((toggle) => + toggle + .setValue(this.excludedFolder.showFolderNote ? this.excludedFolder.showFolderNote : false) + .onChange(async (value) => { + this.excludedFolder.showFolderNote = value; + await this.plugin.saveSettings(); + this.display(); + }) + ); + new Setting(contentEl) .setName('Disable auto creation of folder notes in this folder') .setDesc('Choose if a folder note should be created when a new folder is created') diff --git a/src/ExcludeFolders/modals/PatternSettings.ts b/src/ExcludeFolders/modals/PatternSettings.ts index 69fd791..d528346 100644 --- a/src/ExcludeFolders/modals/PatternSettings.ts +++ b/src/ExcludeFolders/modals/PatternSettings.ts @@ -56,6 +56,19 @@ export default class PatternSettings extends Modal { }) ); + new Setting(contentEl) + .setName('Show folder note in the file explorer') + .setDesc('Choose if the folder note should be shown in the file explorer') + .addToggle((toggle) => + toggle + .setValue(this.pattern.showFolderNote ? this.pattern.showFolderNote : false) + .onChange(async (value) => { + this.pattern.showFolderNote = value; + await this.plugin.saveSettings(); + this.display(); + }) + ); + new Setting(contentEl) .setName('Disable open folder note') .setDesc('Choose if the folder note should be opened when the folder is opened') diff --git a/src/events/MutationObserver.ts b/src/events/MutationObserver.ts index 4ab0a5b..39a841d 100644 --- a/src/events/MutationObserver.ts +++ b/src/events/MutationObserver.ts @@ -56,7 +56,7 @@ export async function addObserver(plugin: FolderNotesPlugin) { breadcrumb.setAttribute('old-name', folder.name || ''); breadcrumb.innerText = folder.newName || ''; } - const excludedFolder = await getExcludedFolder(plugin, folderPath, true); + const excludedFolder = getExcludedFolder(plugin, folderPath, true); if (excludedFolder?.disableFolderNote) return; const folderNote = getFolderNote(plugin, folderPath); if (folderNote) { diff --git a/src/events/handleClick.ts b/src/events/handleClick.ts index 5022812..3cb9d1f 100644 --- a/src/events/handleClick.ts +++ b/src/events/handleClick.ts @@ -13,7 +13,7 @@ export async function handleViewHeaderClick(event: MouseEvent, plugin: FolderNot const folderPath = event.target.getAttribute('data-path'); if (!folderPath) { return; } - const excludedFolder = await getExcludedFolder(plugin, folderPath, true); + const excludedFolder = getExcludedFolder(plugin, folderPath, true); if (excludedFolder?.disableFolderNote) { event.target.onclick = null; event.target.click(); @@ -61,7 +61,7 @@ export async function handleFolderClick(event: MouseEvent, plugin: FolderNotesPl const folderPath = event.target.parentElement?.getAttribute('data-path'); if (!folderPath) { return; } - const excludedFolder = await getExcludedFolder(plugin, folderPath, true); + const excludedFolder = getExcludedFolder(plugin, folderPath, true); if (excludedFolder?.disableFolderNote) { event.target.onclick = null; event.target.click(); diff --git a/src/events/handleCreate.ts b/src/events/handleCreate.ts index 072ff85..72dbb09 100644 --- a/src/events/handleCreate.ts +++ b/src/events/handleCreate.ts @@ -31,7 +31,7 @@ async function handleFileCreation(file: TFile, plugin: FolderNotesPlugin) { const newFolder = await plugin.app.fileManager.createNewFolder(file.parent); turnIntoFolderNote(plugin, file, newFolder); } else if (folder instanceof TFolder) { - const detachedFolder = await getExcludedFolder(plugin, folder.path, true); + const detachedFolder = getExcludedFolder(plugin, folder.path, true); if (detachedFolder) { return; } const folderNote = getFolderNote(plugin, folder.path); @@ -59,7 +59,7 @@ async function handleFolderCreation(folder: TFolder, plugin: FolderNotesPlugin) openFile = false; } - const excludedFolder = await getExcludedFolder(plugin, folder.path, true); + const excludedFolder = getExcludedFolder(plugin, folder.path, true); if (excludedFolder?.disableAutoCreate) return; const folderNote = getFolderNote(plugin, folder.path); diff --git a/src/events/handleRename.ts b/src/events/handleRename.ts index 5e4c19c..ba9e1b1 100644 --- a/src/events/handleRename.ts +++ b/src/events/handleRename.ts @@ -55,7 +55,7 @@ export async function handleFileMove(file: TFile, oldPath: string, plugin: Folde const oldFileName = removeExtension(getFileNameFromPathString(oldPath)); const newFolder = getFolderNoteFolder(plugin, file, file.basename); const folderNote = getFolderNote(plugin, oldPath, plugin.settings.storageLocation, file); - let excludedFolder = await getExcludedFolder(plugin, newFolder?.path || '', true); + let excludedFolder = getExcludedFolder(plugin, newFolder?.path || '', true); const oldFolder = getFolderNoteFolder(plugin, oldPath, oldFileName); // file has been moved into position where it can be a folder note! @@ -101,7 +101,7 @@ export async function handleFolderRename(file: TFolder, oldPath: string, plugin: if (!(folderNote instanceof TFile)) return; - const excludedFolder = await getExcludedFolder(plugin, file.path, true); + const excludedFolder = getExcludedFolder(plugin, file.path, true); if (excludedFolder?.disableSync && !folderNote) { return removeCSSClassFromEL(file.path, 'has-folder-note', plugin); } @@ -138,7 +138,7 @@ export async function handleFileRename(file: TFile, oldPath: string, plugin: Fol const folderName = extractFolderName(plugin.settings.folderNoteName, file.basename) || file.basename; const oldFolderName = extractFolderName(plugin.settings.folderNoteName, oldFileName) || oldFileName; const newFolder = getFolderNoteFolder(plugin, file, file.basename); - const excludedFolder = await getExcludedFolder(plugin, newFolder?.path || '', true); + const excludedFolder = getExcludedFolder(plugin, newFolder?.path || '', true); const detachedExcludedFolder = getDetachedFolder(plugin, newFolder?.path || ''); const folderNote = getFolderNote(plugin, oldPath, plugin.settings.storageLocation, file); diff --git a/src/functions/folderNoteFunctions.ts b/src/functions/folderNoteFunctions.ts index a507577..85fe9eb 100644 --- a/src/functions/folderNoteFunctions.ts +++ b/src/functions/folderNoteFunctions.ts @@ -203,7 +203,7 @@ export async function turnIntoFolderNote(plugin: FolderNotesPlugin, file: TFile, } export async function tempDisableSync(plugin: FolderNotesPlugin, folder: TFolder): Promise<[excludedFolder: ExcludedFolder | undefined, excludedFolderExisted: boolean, disabledSync: boolean]> { - let excludedFolder = await getExcludedFolder(plugin, folder.path, false); + let excludedFolder = getExcludedFolder(plugin, folder.path, false); let excludedFolderExisted = true; let disabledSync = false; diff --git a/src/functions/styleFunctions.ts b/src/functions/styleFunctions.ts index a9a8cb7..eecea5b 100644 --- a/src/functions/styleFunctions.ts +++ b/src/functions/styleFunctions.ts @@ -18,7 +18,7 @@ export function loadFileClasses(forceReload = false, plugin: FolderNotesPlugin) return; } - const excludedFolder = await getExcludedFolder(plugin, file.path, true); + const excludedFolder = getExcludedFolder(plugin, file.path, true); // cleanup after ourselves // Incase settings have changed if (excludedFolder?.disableFolderNote) { @@ -26,7 +26,7 @@ export function loadFileClasses(forceReload = false, plugin: FolderNotesPlugin) removeCSSClassFromEL(file.path, 'has-folder-note', plugin); removeCSSClassFromEL(file?.path, 'only-has-folder-note', plugin); } else { - if (!excludedFolder?.hideNote) { + if (!excludedFolder?.showFolderNote) { addCSSClassToTitleEL(folderNote.path, 'is-folder-note', plugin); } addCSSClassesToFolder(file, plugin); @@ -48,17 +48,17 @@ export async function applyCSSClassesToFolder(folderPath: string, plugin: Folder return; } - const excludedFolder = await getExcludedFolder(plugin, folder.path, true); - + const excludedFolder = getExcludedFolder(plugin, folder.path, true); if (excludedFolder?.disableFolderNote) { removeCSSClassFromEL(folderNote.path, 'is-folder-note', plugin); removeCSSClassFromEL(folder.path, 'has-folder-note', plugin); removeCSSClassFromEL(folder?.path, 'only-has-folder-note', plugin); } else { - if (!excludedFolder?.hideNote) { - addCSSClassToFolderNote(folderNote, plugin); - } addCSSClassesToFolder(folder, plugin); + if (excludedFolder?.showFolderNote) { + removeCSSClassFromFolderNote(folderNote, plugin); + return; + } if (plugin.isEmptyFolderNoteFolder(folder)) { addCSSClassToTitleEL(folder.path, 'only-has-folder-note', plugin); } else { diff --git a/src/main.ts b/src/main.ts index c538e18..515b168 100644 --- a/src/main.ts +++ b/src/main.ts @@ -121,7 +121,7 @@ export default class FolderNotesPlugin extends Plugin { const folder = getFolder(this, openFile); if (!folder) { return; } - const excludedFolder = await getExcludedFolder(this, folder.path, true); + const excludedFolder = getExcludedFolder(this, folder.path, true); if (excludedFolder?.disableFolderNote) return; const folderNote = getFolderNote(this, folder.path); if (!folderNote) { return; } diff --git a/src/settings/SettingsTab.ts b/src/settings/SettingsTab.ts index 3f27d1e..8e25684 100644 --- a/src/settings/SettingsTab.ts +++ b/src/settings/SettingsTab.ts @@ -154,7 +154,7 @@ export const DEFAULT_SETTINGS: FolderNotesSettings = { string: '', hideInSettings: false, detached: false, - hideNote: false, + showFolderNote: false, }, excludePatternDefaultSettings: { type: 'pattern', @@ -170,7 +170,7 @@ export const DEFAULT_SETTINGS: FolderNotesSettings = { string: '', hideInSettings: false, detached: false, - hideNote: false, + showFolderNote: false, }, hideCollapsingIcon: false, hideCollapsingIconForEmptyFolders: false, diff --git a/src/settings/modals/CreateFnForEveryFolder.ts b/src/settings/modals/CreateFnForEveryFolder.ts index 86583c8..c3e719a 100644 --- a/src/settings/modals/CreateFnForEveryFolder.ts +++ b/src/settings/modals/CreateFnForEveryFolder.ts @@ -65,7 +65,7 @@ export default class ConfirmationModal extends Modal { const folders = this.app.vault.getAllLoadedFiles().filter((file) => file.parent instanceof TFolder); for (const folder of folders) { if (folder instanceof TFolder) { - const excludedFolder = await getExcludedFolder(this.plugin, folder.path, true); + const excludedFolder = getExcludedFolder(this.plugin, folder.path, true); if (excludedFolder) continue; if (folder.path === templateFolderPath) continue; const folderNote = getFolderNote(this.plugin, folder.path);