Fix excluded folder "show in file explorer" setting

Previously when enabled folder notes wouldn't show in the file explorer
This commit is contained in:
Lost Paul 2025-06-21 09:58:15 +02:00
parent c5c001cffc
commit 1f5f383921
10 changed files with 35 additions and 33 deletions

View file

@ -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();

View file

@ -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();

View file

@ -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) {

View file

@ -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';

View file

@ -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,
};
}

View file

@ -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();
})

View file

@ -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();
})
);

View file

@ -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();
})
);

View file

@ -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();
})
);

View file

@ -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) {