From c0441d04c71a278ce30dc7fd4afc924739c72001 Mon Sep 17 00:00:00 2001 From: vorotamoroz Date: Sun, 10 May 2026 00:06:01 +0900 Subject: [PATCH] feat(WIP): auto configuration tweak-values --- src/lib | 2 +- src/main.ts | 2 ++ .../SettingDialogue/ObsidianLiveSyncSettingTab.ts | 11 ++++++++++- src/modules/features/SetupManager.ts | 3 +++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/lib b/src/lib index 9753055..29f65b8 160000 --- a/src/lib +++ b/src/lib @@ -1 +1 @@ -Subproject commit 97530553a63dc206ea3fb7ef60721cabda6c74cc +Subproject commit 29f65b8cdac87de3e456821dff06635dffe836c9 diff --git a/src/main.ts b/src/main.ts index a07ce40..323ab7b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -35,6 +35,7 @@ import { enableI18nFeature } from "./serviceFeatures/onLayoutReady/enablei18n.ts import { useOfflineScanner } from "@lib/serviceFeatures/offlineScanner.ts"; import { useRemoteConfiguration } from "@lib/serviceFeatures/remoteConfig.ts"; import { useCheckRemoteSize } from "@lib/serviceFeatures/checkRemoteSize.ts"; +import { useAutoConfig } from "@lib/serviceFeatures/autoConfig.ts"; import { useRedFlagFeatures } from "./serviceFeatures/redFlag.ts"; import { useSetupProtocolFeature } from "./serviceFeatures/setupObsidian/setupProtocol.ts"; import { useSetupQRCodeFeature } from "@lib/serviceFeatures/setupObsidian/qrCode"; @@ -185,6 +186,7 @@ export default class ObsidianLiveSyncPlugin extends Plugin { useOfflineScanner(core); useRedFlagFeatures(core); useCheckRemoteSize(core); + useAutoConfig(core); // p2pReplicatorResult = useP2PReplicator(core, [ // VIEW_TYPE_P2P, // (leaf: any) => new P2PReplicatorPaneView(leaf, core, p2pReplicatorResult!), diff --git a/src/modules/features/SettingDialogue/ObsidianLiveSyncSettingTab.ts b/src/modules/features/SettingDialogue/ObsidianLiveSyncSettingTab.ts index 9469397..b0bcc23 100644 --- a/src/modules/features/SettingDialogue/ObsidianLiveSyncSettingTab.ts +++ b/src/modules/features/SettingDialogue/ObsidianLiveSyncSettingTab.ts @@ -35,7 +35,8 @@ import { $msg } from "../../../lib/src/common/i18n.ts"; import { LiveSyncSetting as Setting } from "./LiveSyncSetting.ts"; import { fireAndForget, yieldNextAnimationFrame } from "octagonal-wheels/promises"; import { confirmWithMessage } from "../../coreObsidian/UILib/dialogs.ts"; -import { EVENT_REQUEST_RELOAD_SETTING_TAB, eventHub } from "../../../common/events.ts"; +import { EVENT_REQUEST_RELOAD_SETTING_TAB, EVENT_AUTO_CONFIG_KEYS_CHANGED, eventHub } from "../../../common/events.ts"; +import { AutoConfigEfficiencyKeys } from "@lib/common/models/tweak.definition.ts"; import { JournalSyncMinio } from "../../../lib/src/replication/journal/objectstore/JournalSyncMinio.ts"; import { paneChangeLog } from "./PaneChangeLog.ts"; import { @@ -177,6 +178,14 @@ export class ObsidianLiveSyncSettingTab extends PluginSettingTab { await this.services.setting.saveSettingData(); } + // Notify autoConfig when efficiency-affecting tweak keys are changed. + const changedEfficiencyKeys = appliedKeys.filter((k) => + (AutoConfigEfficiencyKeys as string[]).includes(k) + ) as (keyof ObsidianLiveSyncSettings)[]; + if (changedEfficiencyKeys.length > 0) { + eventHub.emitEvent(EVENT_AUTO_CONFIG_KEYS_CHANGED, changedEfficiencyKeys); + } + // if (runOnSaved) { const handlers = this.onSavedHandlers .filter((e) => appliedKeys.indexOf(e.key) !== -1) diff --git a/src/modules/features/SetupManager.ts b/src/modules/features/SetupManager.ts index 1bd40be..f884010 100644 --- a/src/modules/features/SetupManager.ts +++ b/src/modules/features/SetupManager.ts @@ -23,6 +23,8 @@ import SetupRemoteP2P from "./SetupWizard/dialogs/SetupRemoteP2P.svelte"; import SetupRemoteE2EE from "./SetupWizard/dialogs/SetupRemoteE2EE.svelte"; import { decodeSettingsFromQRCodeData } from "../../lib/src/API/processSetting.ts"; import { AbstractModule } from "../AbstractModule.ts"; +import { EVENT_SETTINGS_IMPORTED } from "../../lib/src/events/coreEvents.ts"; +import { eventHub } from "../../lib/src/hub/hub.ts"; /** * User modes for onboarding and setup @@ -374,6 +376,7 @@ export class SetupManager extends AbstractModule { async applySetting(newConf: ObsidianLiveSyncSettings, userMode: UserMode) { this.services.setting.clearUsedPassphrase(); await this.services.setting.applyExternalSettings(newConf, true); + eventHub.emitEvent(EVENT_SETTINGS_IMPORTED); return true; } }