From 4b195b070d22fe4c7fd554db03cb9885e98a2f91 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sun, 23 Nov 2025 16:50:03 +0000 Subject: [PATCH] Expose new advanced settings --- .../src/views/settings/settings-tab.ts | 72 ++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/frontend/obsidian-plugin/src/views/settings/settings-tab.ts b/frontend/obsidian-plugin/src/views/settings/settings-tab.ts index e4c16e6e..3c6ccd73 100644 --- a/frontend/obsidian-plugin/src/views/settings/settings-tab.ts +++ b/frontend/obsidian-plugin/src/views/settings/settings-tab.ts @@ -322,7 +322,7 @@ export class SyncSettingsTab extends PluginSettingTab { ) .addButton((button) => button.setButtonText("Reset sync state").onClick(async () => { - await this.syncClient.reset(); + await this.syncClient.applyChangedConnectionSettings(); new Notice( "Sync state has been reset, you will need to resync" ); @@ -348,6 +348,76 @@ export class SyncSettingsTab extends PluginSettingTab { this.syncClient.setSetting("enableTelemetry", value) ) ); + + containerEl.createEl("h3", { text: "Advanced" }); + + new Setting(containerEl) + .setName("Network retry interval (ms)") + .setDesc( + "The time to wait between retrying failed network requests, in milliseconds." + ) + .addText((input) => + input + .setValue( + this.syncClient + .getSettings() + .networkRetryIntervalMs.toString() + ) + .onChange(async (value) => { + if (value === "") { + return; + } + let parsedValue = Number.parseInt(value, 10); + if (Number.isNaN(parsedValue) || parsedValue < 0) { + parsedValue = + this.syncClient.getSettings() + .networkRetryIntervalMs; + } + + if (value !== parsedValue.toString()) { + input.setValue(parsedValue.toString()); + } + + return this.syncClient.setSetting( + "networkRetryIntervalMs", + parsedValue + ); + }) + ); + + new Setting(containerEl) + .setName("Minimum save interval (ms)") + .setDesc( + "The minimum time between saving settings and database to disk, in milliseconds. Lower values save more frequently but may impact performance." + ) + .addText((input) => + input + .setValue( + this.syncClient + .getSettings() + .minimumSaveIntervalMs.toString() + ) + .onChange(async (value) => { + if (value === "") { + return; + } + let parsedValue = Number.parseInt(value, 10); + if (Number.isNaN(parsedValue) || parsedValue < 0) { + parsedValue = + this.syncClient.getSettings() + .minimumSaveIntervalMs; + } + + if (value !== parsedValue.toString()) { + input.setValue(parsedValue.toString()); + } + + return this.syncClient.setSetting( + "minimumSaveIntervalMs", + parsedValue + ); + }) + ); } private setStatusDescriptionSubscription(