From 27e9b685100846d7818aaab60e0b2b44e1240241 Mon Sep 17 00:00:00 2001 From: vorotamoroz Date: Wed, 10 Jun 2026 11:45:41 +0100 Subject: [PATCH] (chore): Resolving circular references --- src/features/ConfigSync/CmdConfigSync.ts | 13 +- src/features/ConfigSync/PluginDialogModal.ts | 2 +- src/features/ConfigSync/PluginPane.svelte | 2 +- src/lib | 2 +- src/main.ts | 3 +- src/modules/extras/ModuleDev.ts | 47 +---- .../DocumentHistory/DocumentHistoryModal.ts | 2 +- .../GlobalHistory/GlobalHistory.svelte | 2 +- .../SettingDialogue/LiveSyncSetting.ts | 27 +-- .../ObsidianLiveSyncSettingTab.ts | 46 +---- src/serviceFeatures/redFlag.simpleFetch.ts | 2 +- src/serviceFeatures/redFlag.ts | 182 +----------------- src/serviceFeatures/redFlag.unit.spec.ts | 6 +- src/serviceFeatures/redFlag.utils.ts | 181 +++++++++++++++++ 14 files changed, 216 insertions(+), 301 deletions(-) create mode 100644 src/serviceFeatures/redFlag.utils.ts diff --git a/src/features/ConfigSync/CmdConfigSync.ts b/src/features/ConfigSync/CmdConfigSync.ts index dae5dfa..6b97de7 100644 --- a/src/features/ConfigSync/CmdConfigSync.ts +++ b/src/features/ConfigSync/CmdConfigSync.ts @@ -8,6 +8,7 @@ import { diff_match_patch, Platform, addIcon, + type App, } from "@/deps.ts"; import type { EntryDoc } from "@lib/common/models/db.definition"; import type { @@ -58,7 +59,7 @@ import { base64ToArrayBuffer, base64ToString } from "octagonal-wheels/binary/bas import { ConflictResolveModal } from "@/modules/features/InteractiveConflictResolving/ConflictResolveModal.ts"; import { Semaphore } from "octagonal-wheels/concurrency/semaphore"; import { EVENT_REQUEST_OPEN_PLUGIN_SYNC_DIALOG, eventHub } from "@/common/events.ts"; -import { PluginDialogModal } from "./PluginDialogModal.ts"; +import type { PluginDialogModal } from "./PluginDialogModal.ts"; import { $msg } from "@/lib/src/common/i18n.ts"; import type { InjectableServiceHub } from "@lib/services/InjectableServices.ts"; import type { LiveSyncCore } from "@/main.ts"; @@ -384,8 +385,14 @@ export type PluginDataEx = { }; export class ConfigSync extends LiveSyncCommands { - constructor(plugin: ObsidianLiveSyncPlugin, core: LiveSyncCore) { + pluginDialogClass: new (app: App, plugin: ObsidianLiveSyncPlugin) => PluginDialogModal; + constructor( + plugin: ObsidianLiveSyncPlugin, + core: LiveSyncCore, + pluginDialogClass: new (app: App, plugin: ObsidianLiveSyncPlugin) => PluginDialogModal + ) { super(plugin, core); + this.pluginDialogClass = pluginDialogClass; pluginScanningCount.onChanged((e) => { const total = e.value; pluginIsEnumerating.set(total != 0); @@ -419,7 +426,7 @@ export class ConfigSync extends LiveSyncCommands { if (this.pluginDialog) { this.pluginDialog.open(); } else { - this.pluginDialog = new PluginDialogModal(this.app, this.plugin); + this.pluginDialog = new this.pluginDialogClass(this.app, this.plugin); this.pluginDialog.open(); } } diff --git a/src/features/ConfigSync/PluginDialogModal.ts b/src/features/ConfigSync/PluginDialogModal.ts index fd79981..bb5bde7 100644 --- a/src/features/ConfigSync/PluginDialogModal.ts +++ b/src/features/ConfigSync/PluginDialogModal.ts @@ -1,6 +1,6 @@ import { mount, unmount } from "svelte"; import { App, Modal } from "@/deps.ts"; -import ObsidianLiveSyncPlugin from "@/main.ts"; +import type ObsidianLiveSyncPlugin from "@/main.ts"; import PluginPane from "./PluginPane.svelte"; export class PluginDialogModal extends Modal { plugin: ObsidianLiveSyncPlugin; diff --git a/src/features/ConfigSync/PluginPane.svelte b/src/features/ConfigSync/PluginPane.svelte index 33d2b34..dbad2b5 100644 --- a/src/features/ConfigSync/PluginPane.svelte +++ b/src/features/ConfigSync/PluginPane.svelte @@ -1,6 +1,6 @@