diff --git a/src/ExcludeFolders/ExcludeFolder.ts b/src/ExcludeFolders/ExcludeFolder.ts index ea68226..8eda370 100644 --- a/src/ExcludeFolders/ExcludeFolder.ts +++ b/src/ExcludeFolders/ExcludeFolder.ts @@ -14,7 +14,7 @@ export class ExcludedFolder { hideInSettings: boolean; detached: boolean; detachedFilePath?: string; - showFolderNote?: boolean; + showFolderNote: boolean; constructor(path: string, position: number, id: string | undefined, plugin: FolderNotesPlugin) { this.type = 'folder'; this.id = id || crypto.randomUUID(); diff --git a/src/ExcludeFolders/ExcludePattern.ts b/src/ExcludeFolders/ExcludePattern.ts index 7052895..6839069 100644 --- a/src/ExcludeFolders/ExcludePattern.ts +++ b/src/ExcludeFolders/ExcludePattern.ts @@ -14,7 +14,7 @@ export class ExcludePattern { hideInSettings: boolean; detached: boolean; detachedFilePath?: string; - showFolderNote?: boolean; + showFolderNote: boolean; constructor(pattern: string, position: number, id: string | undefined, plugin: FolderNotesPlugin) { this.type = 'pattern'; this.id = id || crypto.randomUUID(); diff --git a/src/ExcludeFolders/WhitelistFolder.ts b/src/ExcludeFolders/WhitelistFolder.ts index c354b77..f0b40db 100644 --- a/src/ExcludeFolders/WhitelistFolder.ts +++ b/src/ExcludeFolders/WhitelistFolder.ts @@ -8,8 +8,9 @@ export class WhitelistedFolder { enableSync: boolean; enableAutoCreate: boolean; enableFolderNote: boolean; - enableCollapsing: boolean; + disableCollapsing: boolean; showInFolderOverview: boolean; + hideInFileExplorer: boolean; position: number; hideInSettings: boolean; constructor(path: string, position: number, id: string | undefined, plugin: FolderNotesPlugin) { diff --git a/src/ExcludeFolders/WhitelistPattern.ts b/src/ExcludeFolders/WhitelistPattern.ts index 3aeea07..43ecd45 100644 --- a/src/ExcludeFolders/WhitelistPattern.ts +++ b/src/ExcludeFolders/WhitelistPattern.ts @@ -9,8 +9,9 @@ export class WhitelistedPattern { enableSync: boolean; enableAutoCreate: boolean; enableFolderNote: boolean; - enableCollapsing: boolean; + disableCollapsing: boolean; showInFolderOverview: boolean; + hideInFileExplorer: boolean; hideInSettings: boolean; constructor(pattern: string, position: number, id: string | undefined, plugin: FolderNotesPlugin) { this.type = 'pattern'; diff --git a/src/ExcludeFolders/functions/folderFunctions.ts b/src/ExcludeFolders/functions/folderFunctions.ts index cd50446..1c48af0 100644 --- a/src/ExcludeFolders/functions/folderFunctions.ts +++ b/src/ExcludeFolders/functions/folderFunctions.ts @@ -56,8 +56,9 @@ export function getExcludedFolder(plugin: FolderNotesPlugin, path: string, inclu excludedFolder.disableAutoCreate ? excludedFolder.disableAutoCreate = !whitelistedFolder.enableAutoCreate : ''; excludedFolder.disableFolderNote ? excludedFolder.disableFolderNote = !whitelistedFolder.enableFolderNote : ''; excludedFolder.disableSync ? excludedFolder.disableSync = !whitelistedFolder.enableSync : ''; - excludedFolder.enableCollapsing = whitelistedFolder.enableCollapsing; + excludedFolder.enableCollapsing = !whitelistedFolder.disableCollapsing; excludedFolder.excludeFromFolderOverview ? excludedFolder.excludeFromFolderOverview = !whitelistedFolder.showInFolderOverview : ''; + excludedFolder.showFolderNote = !whitelistedFolder.hideInFileExplorer; } else if (excludedFolder && Object.keys(excludedFolder).length === 0) { excludedFolder = { type: 'folder', @@ -73,6 +74,7 @@ export function getExcludedFolder(plugin: FolderNotesPlugin, path: string, inclu excludeFromFolderOverview: false, hideInSettings: false, detached: false, + showFolderNote: false, }; } diff --git a/src/ExcludeFolders/modals/ExcludeFolderSettings.ts b/src/ExcludeFolders/modals/ExcludeFolderSettings.ts index c862e50..7326bc6 100644 --- a/src/ExcludeFolders/modals/ExcludeFolderSettings.ts +++ b/src/ExcludeFolders/modals/ExcludeFolderSettings.ts @@ -1,6 +1,7 @@ import { App, Modal, Setting } from 'obsidian'; import FolderNotesPlugin from '../../main'; import { ExcludedFolder } from 'src/ExcludeFolders/ExcludeFolder'; +import { updateCSSClassesForFolder } from 'src/functions/styleFunctions'; export default class ExcludedFolderSettings extends Modal { plugin: FolderNotesPlugin; app: App; @@ -59,9 +60,10 @@ export default class ExcludedFolderSettings extends Modal { .setDesc('Choose if the folder note should be shown in the file explorer') .addToggle((toggle) => toggle - .setValue(this.excludedFolder.showFolderNote ? this.excludedFolder.showFolderNote : false) + .setValue(this.excludedFolder.showFolderNote) .onChange(async (value) => { this.excludedFolder.showFolderNote = value; + updateCSSClassesForFolder(this.excludedFolder.path, this.plugin); await this.plugin.saveSettings(); this.display(); }) diff --git a/src/ExcludeFolders/modals/PatternSettings.ts b/src/ExcludeFolders/modals/PatternSettings.ts index d528346..a353c26 100644 --- a/src/ExcludeFolders/modals/PatternSettings.ts +++ b/src/ExcludeFolders/modals/PatternSettings.ts @@ -1,6 +1,7 @@ import { App, Modal, Setting } from 'obsidian'; import FolderNotesPlugin from '../../main'; import { ExcludePattern } from 'src/ExcludeFolders/ExcludePattern'; +import { refreshAllFolderStyles } from 'src/functions/styleFunctions'; export default class PatternSettings extends Modal { plugin: FolderNotesPlugin; @@ -61,10 +62,11 @@ export default class PatternSettings extends Modal { .setDesc('Choose if the folder note should be shown in the file explorer') .addToggle((toggle) => toggle - .setValue(this.pattern.showFolderNote ? this.pattern.showFolderNote : false) + .setValue(this.pattern.showFolderNote) .onChange(async (value) => { this.pattern.showFolderNote = value; await this.plugin.saveSettings(); + refreshAllFolderStyles(true, this.plugin); this.display(); }) ); diff --git a/src/ExcludeFolders/modals/WhitelistFolderSettings.ts b/src/ExcludeFolders/modals/WhitelistFolderSettings.ts index 77f6360..9673758 100644 --- a/src/ExcludeFolders/modals/WhitelistFolderSettings.ts +++ b/src/ExcludeFolders/modals/WhitelistFolderSettings.ts @@ -54,6 +54,18 @@ export default class WhitelistFolderSettings extends Modal { }) ); + new Setting(contentEl) + .setName('Hide folder note in file explorer') + .setDesc('Choose if the folder note should be hidden in the file explorer') + .addToggle((toggle) => + toggle + .setValue(this.whitelistedFolder.hideInFileExplorer) + .onChange(async (value) => { + this.whitelistedFolder.hideInFileExplorer = value; + await this.plugin.saveSettings(); + }) + ); + new Setting(contentEl) .setName('Allow auto creation of folder notes in this folder') .addToggle((toggle) => @@ -81,13 +93,13 @@ export default class WhitelistFolderSettings extends Modal { if (this.whitelistedFolder.enableFolderNote) { new Setting(contentEl) - .setName('Collapse folder when opening folder note') + .setName('Don\'t collapse folder when opening folder note') .setDesc('Choose if the folder should be collapsed when the folder note is opened') .addToggle((toggle) => toggle - .setValue(this.whitelistedFolder.enableCollapsing) + .setValue(this.whitelistedFolder.disableCollapsing) .onChange(async (value) => { - this.whitelistedFolder.enableCollapsing = value; + this.whitelistedFolder.disableCollapsing = value; await this.plugin.saveSettings(); }) ); diff --git a/src/ExcludeFolders/modals/WhitelistPatternSettings.ts b/src/ExcludeFolders/modals/WhitelistPatternSettings.ts index 9d6d1c8..b328f34 100644 --- a/src/ExcludeFolders/modals/WhitelistPatternSettings.ts +++ b/src/ExcludeFolders/modals/WhitelistPatternSettings.ts @@ -70,13 +70,13 @@ export default class WhitelistPatternSettings extends Modal { if (this.pattern.enableFolderNote) { new Setting(contentEl) - .setName('Collapse folder when opening folder note') + .setName('Don\'t collapse folder when opening folder note') .setDesc('Choose if the folder should be collapsed when the folder note is opened') .addToggle((toggle) => toggle - .setValue(this.pattern.enableCollapsing) + .setValue(this.pattern.disableCollapsing) .onChange(async (value) => { - this.pattern.enableCollapsing = value; + this.pattern.disableCollapsing = value; await this.plugin.saveSettings(); }) ); diff --git a/src/functions/styleFunctions.ts b/src/functions/styleFunctions.ts index 7dd1e28..9965d35 100644 --- a/src/functions/styleFunctions.ts +++ b/src/functions/styleFunctions.ts @@ -13,25 +13,8 @@ export function refreshAllFolderStyles(forceReload = false, plugin: FolderNotesP if (plugin.activeFileExplorer === getFileExplorer(plugin) && !forceReload) { return; } plugin.activeFileExplorer = getFileExplorer(plugin); plugin.app.vault.getAllLoadedFiles().forEach(async (file) => { - if (!(file instanceof TFolder)) { return; } - const folderNote = getFolderNote(plugin, file.path); - if (!folderNote) { - removeCSSClassFromFileExplorerEL(file?.path, 'has-folder-note', false, plugin); - removeCSSClassFromFileExplorerEL(file?.path, 'only-has-folder-note', true, plugin); - plugin.isEmptyFolderNoteFolder(file); - return; - } - - const excludedFolder = getExcludedFolder(plugin, file.path, true); - if (excludedFolder?.disableFolderNote) { - removeCSSClassFromFileExplorerEL(folderNote.path, 'is-folder-note', false, plugin); - removeCSSClassFromFileExplorerEL(file.path, 'has-folder-note', false, plugin); - removeCSSClassFromFileExplorerEL(file?.path, 'only-has-folder-note', true, plugin); - } else { - if (!excludedFolder?.showFolderNote) { - addCSSClassToFileExplorerEl(folderNote.path, 'is-folder-note', false, plugin); - } - markFolderWithFolderNoteClasses(file, plugin); + if (file instanceof TFolder) { + await updateCSSClassesForFolder(file.path, plugin); } }); } @@ -44,7 +27,6 @@ export async function updateCSSClassesForFolder(folderPath: string, plugin: Fold if (!folder || !(folder instanceof TFolder)) { return; } const folderNote = getFolderNote(plugin, folder.path); - // console.log('Updating CSS classes for folder:', folder.path, 'Folder Note:', folderNote); const detachedFolderNote = getDetachedFolder(plugin, folder.path); if (folder.children.length === 0) {