mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-11-01 13:58:18 +00:00
fix(syncguard): notify local preference changes without reapplying sync settings
This commit is contained in:
1 parent
3eabc2b305
commit
ed6408cc5a
5 files changed
+29
-6
No files matched your search
@@ -4,7 +4,11 @@ import { isAnyNote } from "@vrtmrz/livesync-commonlib/compat/common/utils";
|
||||
import { compatGlobal } from "@vrtmrz/livesync-commonlib/compat/common/coreEnvFunctions";
|
||||
import type { LiveSyncCore } from "@/main.ts";
|
||||
import { getSyncGuardSettings } from "@/modules/services/ObsidianSettingService.ts";
|
||||
import { EVENT_SETTING_SAVED, EVENT_VAULT_REFLECTION_FAILED } from "@/common/events";
|
||||
import {
|
||||
EVENT_SETTING_SAVED,
|
||||
EVENT_SYNC_GUARD_PREFERENCES_CHANGED,
|
||||
EVENT_VAULT_REFLECTION_FAILED,
|
||||
} from "@/common/events";
|
||||
import type { SyncGuardOverlay } from "./SyncGuardOverlay";
|
||||
import { SyncGuardState } from "./SyncGuardState";
|
||||
|
||||
@@ -136,6 +140,10 @@ export function useSyncGuardFeature(host: LiveSyncCore, createOverlay: SyncGuard
|
||||
const removeSettingSavedHandler = services.context.events.onEvent(EVENT_SETTING_SAVED, () => {
|
||||
onSettingsChanged();
|
||||
});
|
||||
const removeSyncGuardPreferencesHandler = services.context.events.onEvent(
|
||||
EVENT_SYNC_GUARD_PREFERENCES_CHANGED,
|
||||
onSettingsChanged
|
||||
);
|
||||
|
||||
const replication = services.replicator.replicationStatics;
|
||||
const finite = services.replicator.finiteReplicationActivityCount;
|
||||
@@ -181,6 +189,7 @@ export function useSyncGuardFeature(host: LiveSyncCore, createOverlay: SyncGuard
|
||||
for (const source of pendingSources) source.offChanged(onPendingChanged);
|
||||
overlay.dispose();
|
||||
removeSettingSavedHandler();
|
||||
removeSyncGuardPreferencesHandler();
|
||||
removeReflectionFailureHandler();
|
||||
return Promise.resolve(true);
|
||||
});
|
||||
|
||||
@@ -2,7 +2,11 @@ import { reactiveSource } from "octagonal-wheels/dataobject/reactive";
|
||||
import { REMOTE_COUCHDB, type EntryDoc } from "@vrtmrz/livesync-commonlib/compat/common/types";
|
||||
import type { CouchDBReplicationPhase, ReplicationStatics } from "@vrtmrz/livesync-commonlib/replication";
|
||||
import { createServiceContext } from "@vrtmrz/livesync-commonlib/context";
|
||||
import { EVENT_SETTING_SAVED, EVENT_VAULT_REFLECTION_FAILED } from "@/common/events";
|
||||
import {
|
||||
EVENT_SETTING_SAVED,
|
||||
EVENT_SYNC_GUARD_PREFERENCES_CHANGED,
|
||||
EVENT_VAULT_REFLECTION_FAILED,
|
||||
} from "@/common/events";
|
||||
import { describe, afterEach, expect, it, vi } from "vitest";
|
||||
import { useSyncGuardFeature } from "./index";
|
||||
import type { SyncGuardPresentation } from "./SyncGuardState";
|
||||
@@ -375,10 +379,10 @@ describe("useSyncGuardFeature", () => {
|
||||
await h.parseHandlers[0]([receivedNote("one"), receivedNote("two")]);
|
||||
expect(h.updates[h.updates.length - 1]?.phase).toBe("observing");
|
||||
h.settings.syncGuardMinimumFiles = 2;
|
||||
h.events.emitEvent(EVENT_SETTING_SAVED, h.settings as never);
|
||||
h.events.emitEvent(EVENT_SYNC_GUARD_PREFERENCES_CHANGED);
|
||||
expect(h.updates[h.updates.length - 1]?.phase).toBe("transferring");
|
||||
h.settings.syncGuardEnabled = false;
|
||||
h.events.emitEvent(EVENT_SETTING_SAVED, h.settings as never);
|
||||
h.events.emitEvent(EVENT_SYNC_GUARD_PREFERENCES_CHANGED);
|
||||
expect(h.updates[h.updates.length - 1]?.phase).toBe("idle");
|
||||
await h.onUnload[0]();
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user