diff --git a/src/LiveSyncBaseCore.ts b/src/LiveSyncBaseCore.ts index f9f0427..3820c5f 100644 --- a/src/LiveSyncBaseCore.ts +++ b/src/LiveSyncBaseCore.ts @@ -13,6 +13,7 @@ import type { CheckPointInfo } from "./lib/src/replication/journal/JournalSyncTy import type { LiveSyncJournalReplicatorEnv } from "./lib/src/replication/journal/LiveSyncJournalReplicatorEnv"; import type { LiveSyncReplicatorEnv } from "./lib/src/replication/LiveSyncAbstractReplicator"; import { useTargetFilters } from "./lib/src/serviceFeatures/targetFilter"; +import { useSharedConfigFeature } from "./lib/src/serviceFeatures/sharedConfig"; import { useRemoteConfigurationMigration } from "./lib/src/serviceFeatures/remoteConfig"; import type { ServiceContext } from "./lib/src/services/base/ServiceBase"; import type { InjectableServiceHub } from "./lib/src/services/InjectableServices"; @@ -275,6 +276,8 @@ export class LiveSyncBaseCore< usePrepareDatabaseForUse(this); // Migration to multiple remote configurations useRemoteConfigurationMigration(this); + // Shared Configuration + useSharedConfigFeature(this); } } diff --git a/src/lib b/src/lib index 91b5981..293d3c9 160000 --- a/src/lib +++ b/src/lib @@ -1 +1 @@ -Subproject commit 91b59812191dc8e190658b4110eedd4dca5e1803 +Subproject commit 293d3c9c176ce5f1dfa0f084a154af2aa928f3cd diff --git a/src/modules/features/SettingDialogue/PaneSyncSettings.ts b/src/modules/features/SettingDialogue/PaneSyncSettings.ts index 394c7c1..ed533d9 100644 --- a/src/modules/features/SettingDialogue/PaneSyncSettings.ts +++ b/src/modules/features/SettingDialogue/PaneSyncSettings.ts @@ -8,6 +8,7 @@ import { Logger } from "../../../lib/src/common/logger.ts"; import { $msg } from "../../../lib/src/common/i18n.ts"; import { LiveSyncSetting as Setting } from "./LiveSyncSetting.ts"; import { EVENT_REQUEST_COPY_SETUP_URI, eventHub } from "../../../common/events.ts"; +import { triggerEnableAutoConfiguration } from "../../../lib/src/serviceFeatures/sharedConfig.ts"; import type { ObsidianLiveSyncSettingTab } from "./ObsidianLiveSyncSettingTab.ts"; import type { PageFunctions } from "./SettingPane.ts"; import { visibleOnly } from "./SettingPane.ts"; @@ -189,6 +190,34 @@ export function paneSyncSettings( new Setting(paneEl).setClass("wizardHidden").autoWireToggle("syncOnFileOpen", { onUpdate: onlyOnNonLiveSync }); new Setting(paneEl).setClass("wizardHidden").autoWireToggle("syncOnStart", { onUpdate: onlyOnNonLiveSync }); new Setting(paneEl).setClass("wizardHidden").autoWireToggle("syncAfterMerge", { onUpdate: onlyOnNonLiveSync }); + + new Setting(paneEl) + .setClass("wizardHidden") + .setName($msg("obsidianLiveSyncSettingTab.autoConfigByRemote")) + .setDesc($msg("obsidianLiveSyncSettingTab.autoConfigByRemoteDesc")) + .addToggle((toggle) => { + toggle.setValue(this.editingSettings.useAutoConfig); + toggle.onChange(async (val) => { + if (val) { + const enableRes = await triggerEnableAutoConfiguration(this.plugin.core as any); + if (enableRes) { + // Copy settings from service to editingSettings so dialogue is consistent + this.editingSettings.useAutoConfig = true; + const copiedSettings = this.services.setting.settings; + this.editingSettings.hashAlg = copiedSettings.hashAlg; + this.editingSettings.chunkSplitterVersion = copiedSettings.chunkSplitterVersion; + this.editingSettings.enableChunkSplitterV2 = copiedSettings.enableChunkSplitterV2; + this.editingSettings.useSegmenter = copiedSettings.useSegmenter; + this.editingSettings.minimumChunkSize = copiedSettings.minimumChunkSize; + this.editingSettings.customChunkSize = copiedSettings.customChunkSize; + } + } else { + this.editingSettings.useAutoConfig = false; + await this.saveSettings(["liveSync"]); + } + this.display(); // re-render + }); + }); }); void addPanel(