diff --git a/src/logger.ts b/src/logger.ts index ed382ec..bf2de71 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -3,12 +3,13 @@ import { Vault, normalizePath } from "obsidian"; const LOG_FILE_NAME = "github-sync.log" as const; export default class Logger { - private enabled: boolean; private logFile: string; - constructor(private vault: Vault) { + constructor( + private vault: Vault, + private enabled: boolean, + ) { this.logFile = normalizePath(`${vault.configDir}/${LOG_FILE_NAME}`); - this.enabled = true; } private async write( diff --git a/src/main.ts b/src/main.ts index 927128c..a62a9a6 100644 --- a/src/main.ts +++ b/src/main.ts @@ -29,10 +29,10 @@ export default class GitHubSyncPlugin extends Plugin { } async onload() { - this.logger = new Logger(this.app.vault); - await this.loadSettings(); + this.logger = new Logger(this.app.vault, this.settings.enableLogging); + this.addSettingTab(new GitHubSyncSettingsTab(this.app, this)); this.syncManager = new SyncManager( diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 6e95d83..1ad935d 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -11,6 +11,7 @@ export interface GitHubSyncSettings { conflictHandling: "ignore" | "ask" | "overwrite"; showStatusBarItem: boolean; showSyncRibbonButton: boolean; + enableLogging: boolean; } export const DEFAULT_SETTINGS: GitHubSyncSettings = { @@ -26,4 +27,5 @@ export const DEFAULT_SETTINGS: GitHubSyncSettings = { conflictHandling: "ask", showStatusBarItem: true, showSyncRibbonButton: true, + enableLogging: true, }; diff --git a/src/settings/tab.ts b/src/settings/tab.ts index 763ea50..7a61b20 100644 --- a/src/settings/tab.ts +++ b/src/settings/tab.ts @@ -214,5 +214,26 @@ export default class GitHubSyncSettingsTab extends PluginSettingTab { } }); }); + + containerEl.createEl("h2", { text: "Extra" }); + + new Setting(containerEl) + .setName("Enable logging") + .setDesc( + "If enabled logs from this plugin will be saved in a file in your config directory.", + ) + .addToggle((toggle) => { + toggle + .setValue(this.plugin.settings.enableLogging) + .onChange((value) => { + this.plugin.settings.enableLogging = value; + if (value) { + this.plugin.logger.enable(); + } else { + this.plugin.logger.disable(); + } + this.plugin.saveSettings(); + }); + }); } }