WIP: Implement a feature that save settings remotely and apply them automatically

This commit is contained in:
vorotamoroz
2026-05-06 21:53:59 +09:00
parent 70e709ec9a
commit 6da982b54c
3 changed files with 33 additions and 1 deletions

View File

@@ -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);
}
}

Submodule src/lib updated: 91b5981219...293d3c9c17

View File

@@ -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(