Normalise settings values

This commit is contained in:
Andras Schmelczer 2025-04-07 22:28:39 +01:00
commit 04a24d0b38
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C

View file

@ -137,7 +137,6 @@ export class SyncSettingsTab extends PluginSettingTab {
"Server address", "Server address",
"remoteUri" "remoteUri"
); );
new Setting(containerEl) new Setting(containerEl)
.setName(title) .setName(title)
.setDesc( .setDesc(
@ -147,10 +146,10 @@ export class SyncSettingsTab extends PluginSettingTab {
.addText((text) => .addText((text) =>
text text
.setPlaceholder("https://example.com:3000") .setPlaceholder("https://example.com:3000")
.setValue(this.editedServerUri) .setValue(this.editedServerUri.toLowerCase().trim())
.onChange((value) => { .onChange((value) => {
this.editedServerUri = value; this.editedServerUri = value.toLowerCase().trim();
updateTitle(value); updateTitle(value.toLowerCase().trim());
}) })
); );
@ -158,7 +157,6 @@ export class SyncSettingsTab extends PluginSettingTab {
"Access token", "Access token",
"token" "token"
); );
new Setting(containerEl) new Setting(containerEl)
.setName(tokenTitle) .setName(tokenTitle)
.setClass("sync-settings-access-token") .setClass("sync-settings-access-token")
@ -169,16 +167,15 @@ export class SyncSettingsTab extends PluginSettingTab {
.addTextArea((text) => .addTextArea((text) =>
text text
.setPlaceholder("ey...") .setPlaceholder("ey...")
.setValue(this.editedToken) .setValue(this.editedToken.trim())
.onChange((value) => { .onChange((value) => {
this.editedToken = value; this.editedToken = value.trim();
updateTokenTitle(value); updateTokenTitle(value.trim());
}) })
); );
const [vaultNameTitle, updateVaultNameTitle] = const [vaultNameTitle, updateVaultNameTitle] =
this.unsavedAwareSettingName("Vault name", "vaultName"); this.unsavedAwareSettingName("Vault name", "vaultName");
new Setting(containerEl) new Setting(containerEl)
.setName(vaultNameTitle) .setName(vaultNameTitle)
.setDesc( .setDesc(
@ -188,23 +185,17 @@ export class SyncSettingsTab extends PluginSettingTab {
.addText((text) => .addText((text) =>
text text
.setPlaceholder("My Obsidian Vault") .setPlaceholder("My Obsidian Vault")
.setValue(this.editedVaultName) .setValue(this.editedVaultName.toLowerCase().trim())
.onChange((value) => { .onChange((value) => {
this.editedVaultName = value; this.editedVaultName = value.toLowerCase().trim();
updateVaultNameTitle(value); updateVaultNameTitle(value.toLowerCase().trim());
}) })
); );
new Setting(containerEl) new Setting(containerEl)
.addButton((button) => .addButton((button) =>
button.setButtonText("Apply").onClick(async () => { button.setButtonText("Apply").onClick(async () => {
if ( if (this.areThereUnsavedChanges()) {
this.editedVaultName !==
this.syncClient.getSettings().vaultName ||
this.editedServerUri !==
this.syncClient.getSettings().remoteUri ||
this.editedToken !== this.syncClient.getSettings().token
) {
await this.syncClient.setSettings({ await this.syncClient.setSettings({
vaultName: this.editedVaultName, vaultName: this.editedVaultName,
remoteUri: this.editedServerUri, remoteUri: this.editedServerUri,
@ -221,6 +212,12 @@ export class SyncSettingsTab extends PluginSettingTab {
) )
.addButton((button) => .addButton((button) =>
button.setButtonText("Test connection").onClick(async () => { button.setButtonText("Test connection").onClick(async () => {
if (this.areThereUnsavedChanges()) {
new Notice(
"There are unsaved changes, testing with the currently saved settings"
);
}
new Notice( new Notice(
(await this.syncClient.checkConnection()).serverMessage (await this.syncClient.checkConnection()).serverMessage
); );
@ -229,6 +226,14 @@ export class SyncSettingsTab extends PluginSettingTab {
); );
} }
private areThereUnsavedChanges(): boolean {
return (
this.editedServerUri !== this.syncClient.getSettings().remoteUri ||
this.editedToken !== this.syncClient.getSettings().token ||
this.editedVaultName !== this.syncClient.getSettings().vaultName
);
}
private renderSyncSettings(containerEl: HTMLElement): void { private renderSyncSettings(containerEl: HTMLElement): void {
containerEl.createEl("h3", { text: "Sync" }); containerEl.createEl("h3", { text: "Sync" });