mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-05-07 00:01:51 +00:00
WIP: Implement a feature that save settings remotely and apply them automatically
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
2
src/lib
2
src/lib
Submodule src/lib updated: 91b5981219...293d3c9c17
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user