mirror of
https://github.com/lostpaul/obsidian-folder-notes.git
synced 2026-07-22 07:40:24 +00:00
Fix folder note name feature and add conformation modal
This commit is contained in:
parent
7d1b03ec17
commit
451de100be
4 changed files with 23 additions and 12 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
})
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue