From 451de100be024d7b13c428dfa4287a6b36123fd7 Mon Sep 17 00:00:00 2001 From: Lost Paul <70213368+LostPaul@users.noreply.github.com> Date: Sun, 26 Jan 2025 13:08:09 +0100 Subject: [PATCH] Fix folder note name feature and add conformation modal --- src/functions/folderNoteFunctions.ts | 7 ++++--- src/main.ts | 6 +++++- src/settings/GeneralSettings.ts | 6 +++--- src/settings/SettingsTab.ts | 16 +++++++++++----- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/functions/folderNoteFunctions.ts b/src/functions/folderNoteFunctions.ts index 9c051ce..97594ae 100644 --- a/src/functions/folderNoteFunctions.ts +++ b/src/functions/folderNoteFunctions.ts @@ -262,16 +262,17 @@ export function extractFolderName(template: string, changedFileName: string) { return null; } -export function getFolderNote(plugin: FolderNotesPlugin, folderPath: string, storageLocation?: string, file?: TFile) { +export function getFolderNote(plugin: FolderNotesPlugin, folderPath: string, storageLocation?: string, file?: TFile, oldFolderNoteName?: string) { if (!folderPath) return null; const folder = { path: folderPath, name: getFolderNameFromPathString(folderPath), }; + const folderNoteName = oldFolderNoteName ?? plugin.settings.folderNoteName; - let fileName = plugin.settings.folderNoteName.replace('{{folder_name}}', folder.name); + let fileName = folderNoteName.replace('{{folder_name}}', folder.name); if (file) { - fileName = plugin.settings.folderNoteName.replace('{{folder_name}}', file.basename); + fileName = folderNoteName.replace('{{folder_name}}', file.basename); } if (!fileName) return null; diff --git a/src/main.ts b/src/main.ts index 449fff4..5713d9e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -187,7 +187,7 @@ export default class FolderNotesPlugin extends Plugin { } } return originalHandleDrop.call(this, evt, ...args); - } + } } @@ -355,6 +355,10 @@ export default class FolderNotesPlugin extends Plugin { } this.settings = Object.assign({}, DEFAULT_SETTINGS, data); + if (!this.settings.oldFolderNoteName) { + this.settings.oldFolderNoteName = this.settings.folderNoteName; + } + if (!data) { return; } const overview = (data as any).defaultOverview; if (!overview) { return; } diff --git a/src/settings/GeneralSettings.ts b/src/settings/GeneralSettings.ts index 2437796..facb408 100644 --- a/src/settings/GeneralSettings.ts +++ b/src/settings/GeneralSettings.ts @@ -15,10 +15,10 @@ export async function renderGeneral(settingsTab: SettingsTab) { .setDesc('{{folder_name}} will be replaced with the name of the folder') .addText((text) => text - .setValue(settingsTab.plugin.settings.newFolderNoteName) + .setValue(settingsTab.plugin.settings.folderNoteName) .onChange(async (value) => { if (value.trim() === '') { return; } - settingsTab.plugin.settings.newFolderNoteName = value; + settingsTab.plugin.settings.folderNoteName = value; await settingsTab.plugin.saveSettings(); }) ) @@ -32,7 +32,7 @@ export async function renderGeneral(settingsTab: SettingsTab) { 'Rename all existing folder notes', 'When you click on "Confirm" all existing folder notes will be renamed to the new folder note name.', settingsTab.updateFolderNotes, - [settingsTab.plugin.settings.newFolderNoteName]) + []) .open(); }) ); diff --git a/src/settings/SettingsTab.ts b/src/settings/SettingsTab.ts index e43dafc..91e3c57 100644 --- a/src/settings/SettingsTab.ts +++ b/src/settings/SettingsTab.ts @@ -32,6 +32,7 @@ export interface FolderNotesSettings { underlineFolderInPath: boolean; openFolderNoteOnClickInPath: boolean; openInNewTab: boolean; + oldFolderNoteName: string | undefined; folderNoteName: string; newFolderNoteName: string; folderNoteType: string; @@ -88,6 +89,7 @@ export const DEFAULT_SETTINGS: FolderNotesSettings = { underlineFolderInPath: true, openFolderNoteOnClickInPath: true, openInNewTab: false, + oldFolderNoteName: undefined, folderNoteName: '{{folder_name}}', folderNoteType: '.md', disableFolderHighlighting: false, @@ -262,19 +264,23 @@ export class SettingsTab extends PluginSettingTab { } } - updateFolderNotes(newTemplate: string) { + updateFolderNotes() { new Notice('Starting to update folder notes...'); + const oldTemplate = this.plugin.settings.oldFolderNoteName ?? '{{folder_name}}'; for (const folder of this.app.vault.getAllLoadedFiles()) { if (folder instanceof TFolder) { - const folderNote = getFolderNote(this.plugin, folder.path); + const folderNote = getFolderNote(this.plugin, folder.path, undefined, undefined, oldTemplate); if (!(folderNote instanceof TFile)) { continue } - const folderNoteName = newTemplate.replace('{{folder_name}}', folder.name) - const newPath = `${folder.path}/${folderNoteName}.${folderNote.extension}`; + const oldFolderNoteName = oldTemplate.replace('{{folder_name}}', folder.name); + const oldPath = `${folder.path}/${oldFolderNoteName}.${folderNote.extension}`; + if (folderNote.path !== oldPath) { continue } + const newFolderNoteName = this.plugin.settings.folderNoteName.replace('{{folder_name}}', folder.name); + const newPath = `${folder.path}/${newFolderNoteName}.${folderNote.extension}`; if (this.plugin.app.vault.getAbstractFileByPath(newPath)) { continue } this.plugin.app.fileManager.renameFile(folderNote, newPath); } } - this.plugin.settings.folderNoteName = newTemplate; + this.plugin.settings.oldFolderNoteName = this.plugin.settings.folderNoteName; this.plugin.saveSettings(); new Notice('Finished updating folder notes'); }