From b347b1fd7d163c19e74446cf2c9ce3fd3f4010aa Mon Sep 17 00:00:00 2001 From: Al0cam Date: Mon, 14 Apr 2025 11:24:29 +0200 Subject: [PATCH] fix: fixed button bypass of exclusion rules --- Settings/Settings.ts | 12 ++++-------- Settings/SettingsTab.ts | 18 +++++++++--------- main.ts | 18 +++++++++--------- 3 files changed, 22 insertions(+), 26 deletions(-) diff --git a/Settings/Settings.ts b/Settings/Settings.ts index d588597..9b7095c 100644 --- a/Settings/Settings.ts +++ b/Settings/Settings.ts @@ -4,20 +4,16 @@ import type { MovingRule } from "Models/MovingRule"; export interface AutoMoverSettings { moveOnOpen: boolean; - moveOnSave: boolean; - moveOnClose: boolean; - moveOnCreate: boolean; + // moveOnSave: boolean; movingRules: MovingRule[]; - excludedFolders: ExclusionRule[]; + exclusionRules: ExclusionRule[]; } export const DEFAULT_SETTINGS: Partial = { moveOnOpen: true, - moveOnSave: true, - moveOnClose: false, - moveOnCreate: false, + // moveOnSave: true, movingRules: [], - excludedFolders: [], + exclusionRules: [], }; function loadSettings( diff --git a/Settings/SettingsTab.ts b/Settings/SettingsTab.ts index ccb7dfc..ab834f9 100644 --- a/Settings/SettingsTab.ts +++ b/Settings/SettingsTab.ts @@ -182,14 +182,14 @@ export class SettingsTab extends obsidian.PluginSettingTab { /** * Header for excluded folders */ - const excludedFoldersContainer = containerEl.createDiv({ + const exclusionRuleContainer = containerEl.createDiv({ cls: "moving_rules_container", }); - new obsidian.Setting(excludedFoldersContainer) + new obsidian.Setting(exclusionRuleContainer) .setName("Exclusion rules") .setHeading(); - const exclusionList = excludedFoldersContainer.createDiv({ + const exclusionList = exclusionRuleContainer.createDiv({ cls: "rule_list", }); const exclusionHeader = exclusionList.createDiv({ @@ -205,21 +205,21 @@ export class SettingsTab extends obsidian.PluginSettingTab { cls: "rule_button", }); addExclusionButton.addEventListener("click", () => { - this.plugin.settings.excludedFolders.push(new ExclusionRule()); + this.plugin.settings.exclusionRules.push(new ExclusionRule()); this.display(); }); /** * List of excluded folders */ - for (const exclusion of this.plugin.settings.excludedFolders) { + for (const exclusion of this.plugin.settings.exclusionRules) { const child = exclusionList.createDiv({ cls: "rule" }); child.createEl("input", { value: exclusion.regex, cls: "rule_input", }).onchange = (e) => { exclusion.regex = (e.target as HTMLInputElement).value; - this.plugin.settings.excludedFolders.map((ef) => + this.plugin.settings.exclusionRules.map((ef) => ef === exclusion ? exclusion : ef, ); this.plugin.saveData(this.plugin.settings); @@ -230,7 +230,7 @@ export class SettingsTab extends obsidian.PluginSettingTab { cls: "rule_button rule_button_duplicate", }); duplicateExclusionButton.addEventListener("click", () => { - this.plugin.settings.excludedFolders.push( + this.plugin.settings.exclusionRules.push( new ExclusionRule(exclusion.regex), ); this.display(); @@ -241,8 +241,8 @@ export class SettingsTab extends obsidian.PluginSettingTab { cls: "rule_button rule_button_remove", }); deleteExclusionButton.addEventListener("click", () => { - this.plugin.settings.excludedFolders = - this.plugin.settings.excludedFolders.filter((r) => r !== exclusion); + this.plugin.settings.exclusionRules = + this.plugin.settings.exclusionRules.filter((r) => r !== exclusion); this.display(); }); } diff --git a/main.ts b/main.ts index bc599f1..3109981 100644 --- a/main.ts +++ b/main.ts @@ -45,6 +45,10 @@ export default class AutoMoverPlugin extends obsidian.Plugin { goThroughAllFiles() { const files = this.app.vault.getFiles(); for (const file of files) { + if (file == null || file.path == null) continue; + console.log("Going through file: ", file.path); + console.log("File excluded: ", this.isFileExcluded(file)); + if (this.isFileExcluded(file)) continue; this.matchAndMoveFile(file); } new obsidian.Notice("All files moved!", 5000); @@ -62,7 +66,7 @@ export default class AutoMoverPlugin extends obsidian.Plugin { return exclusionMatcherUtil.isFilePathExcluded( file, - this.settings.excludedFolders, + this.settings.exclusionRules, ); } @@ -108,12 +112,8 @@ export default class AutoMoverPlugin extends obsidian.Plugin { * @returns boolean */ areMovingTriggersEnabled(): boolean { - return ( - this.settings.moveOnClose || - this.settings.moveOnCreate || - this.settings.moveOnOpen || - this.settings.moveOnSave - ); + return this.settings.moveOnOpen; + // || this.settings.moveOnSave } /** @@ -134,7 +134,7 @@ export default class AutoMoverPlugin extends obsidian.Plugin { * @returns boolean */ areThereExcludedFolders(): boolean { - return this.settings.excludedFolders.length > 0; + return this.settings.exclusionRules.length > 0; } /** @@ -152,6 +152,6 @@ export default class AutoMoverPlugin extends obsidian.Plugin { * @returns boolean */ areExcludedFoldersValid(): boolean { - return this.settings.excludedFolders.every((rule) => rule.regex !== ""); + return this.settings.exclusionRules.every((rule) => rule.regex !== ""); } }