Fix folder note name feature and add conformation modal

This commit is contained in:
Lost Paul 2025-01-26 13:08:09 +01:00
parent 7d1b03ec17
commit 451de100be
4 changed files with 23 additions and 12 deletions

View file

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

View file

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

View file

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

View file

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