diff --git a/src/features/ConfigSync/CmdConfigSync.ts b/src/features/ConfigSync/CmdConfigSync.ts index 0d8df06..2a0d046 100644 --- a/src/features/ConfigSync/CmdConfigSync.ts +++ b/src/features/ConfigSync/CmdConfigSync.ts @@ -1803,16 +1803,16 @@ export class ConfigSync extends LiveSyncCommands { return files; } onBindFunction(core: LiveSyncCore, services: InjectableServiceHub): void { - services.fileProcessing.handleOptionalFileEvent(this._anyProcessOptionalFileEvent.bind(this)); - services.conflict.handleGetOptionalConflictCheckMethod(this._anyGetOptionalConflictCheckMethod.bind(this)); - services.replication.handleProcessVirtualDocuments(this._anyModuleParsedReplicationResultItem.bind(this)); - services.setting.handleOnRealiseSetting(this._everyRealizeSettingSyncMode.bind(this)); - services.appLifecycle.handleOnResuming(this._everyOnResumeProcess.bind(this)); - services.appLifecycle.handleOnResumed(this._everyAfterResumeProcess.bind(this)); - services.replication.handleBeforeReplicate(this._everyBeforeReplicate.bind(this)); - services.databaseEvents.handleDatabaseInitialised(this._everyOnDatabaseInitialized.bind(this)); - services.setting.handleSuspendExtraSync(this._allSuspendExtraSync.bind(this)); - services.setting.handleSuggestOptionalFeatures(this._allAskUsingOptionalSyncFeature.bind(this)); - services.setting.handleEnableOptionalFeature(this._allConfigureOptionalSyncFeature.bind(this)); + services.fileProcessing.processOptionalFileEvent.addHandler(this._anyProcessOptionalFileEvent.bind(this)); + services.conflict.getOptionalConflictCheckMethod.addHandler(this._anyGetOptionalConflictCheckMethod.bind(this)); + services.replication.processVirtualDocument.addHandler(this._anyModuleParsedReplicationResultItem.bind(this)); + services.setting.onRealiseSetting.addHandler(this._everyRealizeSettingSyncMode.bind(this)); + services.appLifecycle.onResuming.addHandler(this._everyOnResumeProcess.bind(this)); + services.appLifecycle.onResumed.addHandler(this._everyAfterResumeProcess.bind(this)); + services.replication.onBeforeReplicate.addHandler(this._everyBeforeReplicate.bind(this)); + services.databaseEvents.onDatabaseInitialised.addHandler(this._everyOnDatabaseInitialized.bind(this)); + services.setting.suspendExtraSync.addHandler(this._allSuspendExtraSync.bind(this)); + services.setting.suggestOptionalFeatures.addHandler(this._allAskUsingOptionalSyncFeature.bind(this)); + services.setting.enableOptionalFeature.addHandler(this._allConfigureOptionalSyncFeature.bind(this)); } } diff --git a/src/features/HiddenFileSync/CmdHiddenFileSync.ts b/src/features/HiddenFileSync/CmdHiddenFileSync.ts index 9f66b87..dd7a323 100644 --- a/src/features/HiddenFileSync/CmdHiddenFileSync.ts +++ b/src/features/HiddenFileSync/CmdHiddenFileSync.ts @@ -1914,16 +1914,16 @@ ${messageFetch}${messageOverwrite}${messageMerge} onBindFunction(core: LiveSyncCore, services: typeof core.services) { // No longer needed on initialisation // services.databaseEvents.handleOnDatabaseInitialisation(this._everyOnInitializeDatabase.bind(this)); - services.appLifecycle.handleOnSettingLoaded(this._everyOnloadAfterLoadSettings.bind(this)); - services.fileProcessing.handleOptionalFileEvent(this._anyProcessOptionalFileEvent.bind(this)); - services.conflict.handleGetOptionalConflictCheckMethod(this._anyGetOptionalConflictCheckMethod.bind(this)); - services.replication.handleProcessOptionalSynchroniseResult(this._anyProcessOptionalSyncFiles.bind(this)); - services.setting.handleOnRealiseSetting(this._everyRealizeSettingSyncMode.bind(this)); - services.appLifecycle.handleOnResuming(this._everyOnResumeProcess.bind(this)); - services.replication.handleBeforeReplicate(this._everyBeforeReplicate.bind(this)); - services.databaseEvents.handleDatabaseInitialised(this._everyOnDatabaseInitialized.bind(this)); - services.setting.handleSuspendExtraSync(this._allSuspendExtraSync.bind(this)); - services.setting.handleSuggestOptionalFeatures(this._allAskUsingOptionalSyncFeature.bind(this)); - services.setting.handleEnableOptionalFeature(this._allConfigureOptionalSyncFeature.bind(this)); + services.appLifecycle.onSettingLoaded.addHandler(this._everyOnloadAfterLoadSettings.bind(this)); + services.fileProcessing.processOptionalFileEvent.addHandler(this._anyProcessOptionalFileEvent.bind(this)); + services.conflict.getOptionalConflictCheckMethod.addHandler(this._anyGetOptionalConflictCheckMethod.bind(this)); + services.replication.processOptionalSynchroniseResult.addHandler(this._anyProcessOptionalSyncFiles.bind(this)); + services.setting.onRealiseSetting.addHandler(this._everyRealizeSettingSyncMode.bind(this)); + services.appLifecycle.onResuming.addHandler(this._everyOnResumeProcess.bind(this)); + services.replication.onBeforeReplicate.addHandler(this._everyBeforeReplicate.bind(this)); + services.databaseEvents.onDatabaseInitialised.addHandler(this._everyOnDatabaseInitialized.bind(this)); + services.setting.suspendExtraSync.addHandler(this._allSuspendExtraSync.bind(this)); + services.setting.suggestOptionalFeatures.addHandler(this._allAskUsingOptionalSyncFeature.bind(this)); + services.setting.enableOptionalFeature.addHandler(this._allConfigureOptionalSyncFeature.bind(this)); } } diff --git a/src/features/P2PSync/CmdP2PReplicator.ts b/src/features/P2PSync/CmdP2PReplicator.ts index 865df50..7b85b33 100644 --- a/src/features/P2PSync/CmdP2PReplicator.ts +++ b/src/features/P2PSync/CmdP2PReplicator.ts @@ -271,11 +271,11 @@ export class P2PReplicator extends LiveSyncCommands implements P2PReplicatorBase } override onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.replicator.handleGetNewReplicator(this._anyNewReplicator.bind(this)); - services.databaseEvents.handleOnDatabaseInitialisation(this._everyOnInitializeDatabase.bind(this)); - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); - services.appLifecycle.handleOnSuspending(this._everyBeforeSuspendProcess.bind(this)); - services.appLifecycle.handleOnResumed(this._everyAfterResumeProcess.bind(this)); - services.setting.handleSuspendExtraSync(this._allSuspendExtraSync.bind(this)); + services.replicator.getNewReplicator.addHandler(this._anyNewReplicator.bind(this)); + services.databaseEvents.onDatabaseInitialisation.addHandler(this._everyOnInitializeDatabase.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); + services.appLifecycle.onSuspending.addHandler(this._everyBeforeSuspendProcess.bind(this)); + services.appLifecycle.onResumed.addHandler(this._everyAfterResumeProcess.bind(this)); + services.setting.suspendExtraSync.addHandler(this._allSuspendExtraSync.bind(this)); } } diff --git a/src/lib b/src/lib index 8fbd310..724d788 160000 --- a/src/lib +++ b/src/lib @@ -1 +1 @@ -Subproject commit 8fbd310e7f680c4896ee47a6e4a442182c7d0fec +Subproject commit 724d788e2b5728d94ff13bf02e42bb553cc54dbe diff --git a/src/main.ts b/src/main.ts index ba47d13..2f80bf9 100644 --- a/src/main.ts +++ b/src/main.ts @@ -70,6 +70,7 @@ import { P2PReplicator } from "./features/P2PSync/CmdP2PReplicator.ts"; import type { LiveSyncManagers } from "./lib/src/managers/LiveSyncManagers.ts"; import { ObsidianServiceHub } from "./modules/services/ObsidianServices.ts"; import type { InjectableServiceHub } from "./lib/src/services/InjectableServices.ts"; +import type { ServiceContext } from "./lib/src/services/ServiceHub.ts"; export default class ObsidianLiveSyncPlugin extends Plugin @@ -83,7 +84,7 @@ export default class ObsidianLiveSyncPlugin /** * The service hub for managing all services. */ - _services: InjectableServiceHub = new ObsidianServiceHub(this); + _services: InjectableServiceHub = new ObsidianServiceHub(this); get services() { return this._services; } diff --git a/src/modules/core/ModuleDatabaseFileAccess.ts b/src/modules/core/ModuleDatabaseFileAccess.ts index 5fe9527..d3024af 100644 --- a/src/modules/core/ModuleDatabaseFileAccess.ts +++ b/src/modules/core/ModuleDatabaseFileAccess.ts @@ -346,7 +346,7 @@ export class ModuleDatabaseFileAccess extends AbstractModule implements Database return ret; } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnLoaded(this._everyOnload.bind(this)); - services.test.handleTest(this._everyModuleTest.bind(this)); + services.appLifecycle.onLoaded.addHandler(this._everyOnload.bind(this)); + services.test.test.addHandler(this._everyModuleTest.bind(this)); } } diff --git a/src/modules/core/ModuleFileHandler.ts b/src/modules/core/ModuleFileHandler.ts index 712428a..2699004 100644 --- a/src/modules/core/ModuleFileHandler.ts +++ b/src/modules/core/ModuleFileHandler.ts @@ -436,8 +436,8 @@ export class ModuleFileHandler extends AbstractModule { ); } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); - services.fileProcessing.handleProcessFileEvent(this._anyHandlerProcessesFileEvent.bind(this)); - services.replication.handleProcessSynchroniseResult(this._anyProcessReplicatedDoc.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); + services.fileProcessing.processFileEvent.addHandler(this._anyHandlerProcessesFileEvent.bind(this)); + services.replication.processSynchroniseResult.addHandler(this._anyProcessReplicatedDoc.bind(this)); } } diff --git a/src/modules/core/ModuleLocalDatabaseObsidian.ts b/src/modules/core/ModuleLocalDatabaseObsidian.ts index 09d0ef3..5b74a2a 100644 --- a/src/modules/core/ModuleLocalDatabaseObsidian.ts +++ b/src/modules/core/ModuleLocalDatabaseObsidian.ts @@ -39,8 +39,8 @@ export class ModuleLocalDatabaseObsidian extends AbstractModule { return this.localDatabase != null && this.localDatabase.isReady; } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.database.handleIsDatabaseReady(this._isDatabaseReady.bind(this)); - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); - services.database.handleOpenDatabase(this._openDatabase.bind(this)); + services.database.isDatabaseReady.setHandler(this._isDatabaseReady.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); + services.database.openDatabase.setHandler(this._openDatabase.bind(this)); } } diff --git a/src/modules/core/ModulePeriodicProcess.ts b/src/modules/core/ModulePeriodicProcess.ts index 32ccb37..30e2039 100644 --- a/src/modules/core/ModulePeriodicProcess.ts +++ b/src/modules/core/ModulePeriodicProcess.ts @@ -32,10 +32,10 @@ export class ModulePeriodicProcess extends AbstractModule { } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnUnload(this._allOnUnload.bind(this)); - services.setting.handleBeforeRealiseSetting(this._everyBeforeRealizeSetting.bind(this)); - services.setting.handleSettingRealised(this._everyAfterRealizeSetting.bind(this)); - services.appLifecycle.handleOnSuspending(this._everyBeforeSuspendProcess.bind(this)); - services.appLifecycle.handleOnResumed(this._everyAfterResumeProcess.bind(this)); + services.appLifecycle.onUnload.addHandler(this._allOnUnload.bind(this)); + services.setting.onBeforeRealiseSetting.addHandler(this._everyBeforeRealizeSetting.bind(this)); + services.setting.onSettingRealised.addHandler(this._everyAfterRealizeSetting.bind(this)); + services.appLifecycle.onSuspending.addHandler(this._everyBeforeSuspendProcess.bind(this)); + services.appLifecycle.onResumed.addHandler(this._everyAfterResumeProcess.bind(this)); } } diff --git a/src/modules/core/ModulePouchDB.ts b/src/modules/core/ModulePouchDB.ts index 0101e4b..821afdc 100644 --- a/src/modules/core/ModulePouchDB.ts +++ b/src/modules/core/ModulePouchDB.ts @@ -18,6 +18,6 @@ export class ModulePouchDB extends AbstractModule { return new PouchDB(name, optionPass); } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.database.handleCreatePouchDBInstance(this._createPouchDBInstance.bind(this)); + services.database.createPouchDBInstance.setHandler(this._createPouchDBInstance.bind(this)); } } diff --git a/src/modules/core/ModuleRebuilder.ts b/src/modules/core/ModuleRebuilder.ts index 9b6bb5f..0872d95 100644 --- a/src/modules/core/ModuleRebuilder.ts +++ b/src/modules/core/ModuleRebuilder.ts @@ -275,10 +275,10 @@ Please enable them from the settings screen after setup is complete.`, this._log(`Done!`, LOG_LEVEL_NOTICE, "resolveAllConflictedFilesByNewerOnes"); } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnLoaded(this._everyOnload.bind(this)); - services.database.handleResetDatabase(this._resetLocalDatabase.bind(this)); - services.remote.handleTryResetDatabase(this._tryResetRemoteDatabase.bind(this)); - services.remote.handleTryCreateDatabase(this._tryCreateRemoteDatabase.bind(this)); - services.setting.handleSuspendAllSync(this._allSuspendAllSync.bind(this)); + services.appLifecycle.onLoaded.addHandler(this._everyOnload.bind(this)); + services.database.resetDatabase.setHandler(this._resetLocalDatabase.bind(this)); + services.remote.tryResetDatabase.setHandler(this._tryResetRemoteDatabase.bind(this)); + services.remote.tryCreateDatabase.setHandler(this._tryCreateRemoteDatabase.bind(this)); + services.setting.suspendAllSync.addHandler(this._allSuspendAllSync.bind(this)); } } diff --git a/src/modules/core/ModuleReplicator.ts b/src/modules/core/ModuleReplicator.ts index b983500..08af7fa 100644 --- a/src/modules/core/ModuleReplicator.ts +++ b/src/modules/core/ModuleReplicator.ts @@ -329,19 +329,19 @@ Even if you choose to clean up, you will see this option again if you exit Obsid } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.replicator.handleGetActiveReplicator(this._getReplicator.bind(this)); - services.databaseEvents.handleOnDatabaseInitialisation(this._everyOnInitializeDatabase.bind(this)); - services.databaseEvents.handleDatabaseInitialised(this._everyOnDatabaseInitialized.bind(this)); - services.databaseEvents.handleOnResetDatabase(this._everyOnResetDatabase.bind(this)); - services.appLifecycle.handleOnSettingLoaded(this._everyOnloadAfterLoadSettings.bind(this)); - services.replication.handleParseSynchroniseResult(this._parseReplicationResult.bind(this)); - services.appLifecycle.handleOnSuspending(this._everyBeforeSuspendProcess.bind(this)); - services.replication.handleBeforeReplicate(this._everyBeforeReplicate.bind(this)); - services.replication.handleIsReplicationReady(this._canReplicate.bind(this)); - services.replication.handleReplicate(this._replicate.bind(this)); - services.replication.handleReplicateByEvent(this._replicateByEvent.bind(this)); - services.remote.handleReplicateAllToRemote(this._replicateAllToServer.bind(this)); - services.remote.handleReplicateAllFromRemote(this._replicateAllFromServer.bind(this)); - services.appLifecycle.reportUnresolvedMessages(this._reportUnresolvedMessages.bind(this)); + services.replicator.getActiveReplicator.setHandler(this._getReplicator.bind(this)); + services.databaseEvents.onDatabaseInitialisation.addHandler(this._everyOnInitializeDatabase.bind(this)); + services.databaseEvents.onDatabaseInitialised.addHandler(this._everyOnDatabaseInitialized.bind(this)); + services.databaseEvents.onResetDatabase.addHandler(this._everyOnResetDatabase.bind(this)); + services.appLifecycle.onSettingLoaded.addHandler(this._everyOnloadAfterLoadSettings.bind(this)); + services.replication.parseSynchroniseResult.setHandler(this._parseReplicationResult.bind(this)); + services.appLifecycle.onSuspending.addHandler(this._everyBeforeSuspendProcess.bind(this)); + services.replication.onBeforeReplicate.addHandler(this._everyBeforeReplicate.bind(this)); + services.replication.isReplicationReady.setHandler(this._canReplicate.bind(this)); + services.replication.replicate.setHandler(this._replicate.bind(this)); + services.replication.replicateByEvent.setHandler(this._replicateByEvent.bind(this)); + services.remote.replicateAllToRemote.setHandler(this._replicateAllToServer.bind(this)); + services.remote.replicateAllFromRemote.setHandler(this._replicateAllFromServer.bind(this)); + services.appLifecycle.getUnresolvedMessages.addHandler(this._reportUnresolvedMessages.bind(this)); } } diff --git a/src/modules/core/ModuleReplicatorCouchDB.ts b/src/modules/core/ModuleReplicatorCouchDB.ts index 688b964..97b5ef1 100644 --- a/src/modules/core/ModuleReplicatorCouchDB.ts +++ b/src/modules/core/ModuleReplicatorCouchDB.ts @@ -36,7 +36,7 @@ export class ModuleReplicatorCouchDB extends AbstractModule { return Promise.resolve(true); } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.replicator.handleGetNewReplicator(this._anyNewReplicator.bind(this)); - services.appLifecycle.handleOnResumed(this._everyAfterResumeProcess.bind(this)); + services.replicator.getNewReplicator.addHandler(this._anyNewReplicator.bind(this)); + services.appLifecycle.onResumed.addHandler(this._everyAfterResumeProcess.bind(this)); } } diff --git a/src/modules/core/ModuleReplicatorMinIO.ts b/src/modules/core/ModuleReplicatorMinIO.ts index 188db57..fb00330 100644 --- a/src/modules/core/ModuleReplicatorMinIO.ts +++ b/src/modules/core/ModuleReplicatorMinIO.ts @@ -13,6 +13,6 @@ export class ModuleReplicatorMinIO extends AbstractModule { return Promise.resolve(false); } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.replicator.handleGetNewReplicator(this._anyNewReplicator.bind(this)); + services.replicator.getNewReplicator.addHandler(this._anyNewReplicator.bind(this)); } } diff --git a/src/modules/core/ModuleReplicatorP2P.ts b/src/modules/core/ModuleReplicatorP2P.ts index 699671f..0817367 100644 --- a/src/modules/core/ModuleReplicatorP2P.ts +++ b/src/modules/core/ModuleReplicatorP2P.ts @@ -28,7 +28,7 @@ export class ModuleReplicatorP2P extends AbstractModule { return Promise.resolve(true); } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.replicator.handleGetNewReplicator(this._anyNewReplicator.bind(this)); - services.appLifecycle.handleOnResumed(this._everyAfterResumeProcess.bind(this)); + services.replicator.getNewReplicator.addHandler(this._anyNewReplicator.bind(this)); + services.appLifecycle.onResumed.addHandler(this._everyAfterResumeProcess.bind(this)); } } diff --git a/src/modules/core/ModuleTargetFilter.ts b/src/modules/core/ModuleTargetFilter.ts index 06009fc..32f5fe4 100644 --- a/src/modules/core/ModuleTargetFilter.ts +++ b/src/modules/core/ModuleTargetFilter.ts @@ -174,12 +174,12 @@ export class ModuleTargetFilter extends AbstractModule { } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.vault.handleMarkFileListPossiblyChanged(this._markFileListPossiblyChanged.bind(this)); - services.path.handleId2Path(this._id2path.bind(this)); - services.path.handlePath2Id(this._path2id.bind(this)); - services.appLifecycle.handleOnLoaded(this._everyOnload.bind(this)); - services.vault.handleIsFileSizeTooLarge(this._isFileSizeExceeded.bind(this)); - services.vault.handleIsIgnoredByIgnoreFile(this._isIgnoredByIgnoreFiles.bind(this)); - services.vault.handleIsTargetFile(this._isTargetFile.bind(this)); + services.vault.markFileListPossiblyChanged.setHandler(this._markFileListPossiblyChanged.bind(this)); + services.path.id2path.setHandler(this._id2path.bind(this)); + services.path.path2id.setHandler(this._path2id.bind(this)); + services.appLifecycle.onLoaded.addHandler(this._everyOnload.bind(this)); + services.vault.isFileSizeTooLarge.setHandler(this._isFileSizeExceeded.bind(this)); + services.vault.isIgnoredByIgnoreFile.setHandler(this._isIgnoredByIgnoreFiles.bind(this)); + services.vault.isTargetFile.setHandler(this._isTargetFile.bind(this)); } } diff --git a/src/modules/coreFeatures/ModuleConflictChecker.ts b/src/modules/coreFeatures/ModuleConflictChecker.ts index 3bc30ea..b004c0e 100644 --- a/src/modules/coreFeatures/ModuleConflictChecker.ts +++ b/src/modules/coreFeatures/ModuleConflictChecker.ts @@ -75,8 +75,8 @@ export class ModuleConflictChecker extends AbstractModule { } ); onBindFunction(core: LiveSyncCore, services: InjectableServiceHub): void { - services.conflict.handleQueueCheckForIfOpen(this._queueConflictCheckIfOpen.bind(this)); - services.conflict.handleQueueCheckFor(this._queueConflictCheck.bind(this)); - services.conflict.handleEnsureAllProcessed(this._waitForAllConflictProcessed.bind(this)); + services.conflict.queueCheckForIfOpen.setHandler(this._queueConflictCheckIfOpen.bind(this)); + services.conflict.queueCheckFor.setHandler(this._queueConflictCheck.bind(this)); + services.conflict.ensureAllProcessed.setHandler(this._waitForAllConflictProcessed.bind(this)); } } diff --git a/src/modules/coreFeatures/ModuleConflictResolver.ts b/src/modules/coreFeatures/ModuleConflictResolver.ts index 5d4046a..9cf02f3 100644 --- a/src/modules/coreFeatures/ModuleConflictResolver.ts +++ b/src/modules/coreFeatures/ModuleConflictResolver.ts @@ -213,8 +213,8 @@ export class ModuleConflictResolver extends AbstractModule { } onBindFunction(core: LiveSyncCore, services: InjectableServiceHub): void { - services.conflict.handleResolveByDeletingRevision(this._resolveConflictByDeletingRev.bind(this)); - services.conflict.handleResolve(this._resolveConflict.bind(this)); - services.conflict.handleResolveByNewest(this._anyResolveConflictByNewest.bind(this)); + services.conflict.resolveByDeletingRevision.setHandler(this._resolveConflictByDeletingRev.bind(this)); + services.conflict.resolve.setHandler(this._resolveConflict.bind(this)); + services.conflict.resolveByNewest.setHandler(this._anyResolveConflictByNewest.bind(this)); } } diff --git a/src/modules/coreFeatures/ModuleRedFlag.ts b/src/modules/coreFeatures/ModuleRedFlag.ts index 31068d7..931e39f 100644 --- a/src/modules/coreFeatures/ModuleRedFlag.ts +++ b/src/modules/coreFeatures/ModuleRedFlag.ts @@ -322,6 +322,6 @@ export class ModuleRedFlag extends AbstractModule { } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { super.onBindFunction(core, services); - services.appLifecycle.handleLayoutReady(this._everyOnLayoutReady.bind(this)); + services.appLifecycle.onLayoutReady.addHandler(this._everyOnLayoutReady.bind(this)); } } diff --git a/src/modules/coreFeatures/ModuleRemoteGovernor.ts b/src/modules/coreFeatures/ModuleRemoteGovernor.ts index 18c33b7..4252643 100644 --- a/src/modules/coreFeatures/ModuleRemoteGovernor.ts +++ b/src/modules/coreFeatures/ModuleRemoteGovernor.ts @@ -15,8 +15,8 @@ export class ModuleRemoteGovernor extends AbstractModule { return await this.core.replicator.markRemoteResolved(this.settings); } onBindFunction(core: LiveSyncCore, services: InjectableServiceHub): void { - services.remote.handleMarkLocked(this._markRemoteLocked.bind(this)); - services.remote.handleMarkUnlocked(this._markRemoteUnlocked.bind(this)); - services.remote.handleMarkResolved(this._markRemoteResolved.bind(this)); + services.remote.markLocked.setHandler(this._markRemoteLocked.bind(this)); + services.remote.markUnlocked.setHandler(this._markRemoteUnlocked.bind(this)); + services.remote.markResolved.setHandler(this._markRemoteResolved.bind(this)); } } diff --git a/src/modules/coreFeatures/ModuleResolveMismatchedTweaks.ts b/src/modules/coreFeatures/ModuleResolveMismatchedTweaks.ts index 0141cc8..f184922 100644 --- a/src/modules/coreFeatures/ModuleResolveMismatchedTweaks.ts +++ b/src/modules/coreFeatures/ModuleResolveMismatchedTweaks.ts @@ -285,11 +285,15 @@ export class ModuleResolvingMismatchedTweaks extends AbstractModule { } onBindFunction(core: LiveSyncCore, services: InjectableServiceHub): void { - services.tweakValue.handleFetchRemotePreferred(this._fetchRemotePreferredTweakValues.bind(this)); - services.tweakValue.handleCheckAndAskResolvingMismatched(this._checkAndAskResolvingMismatchedTweaks.bind(this)); - services.tweakValue.handleAskResolvingMismatched(this._askResolvingMismatchedTweaks.bind(this)); - services.tweakValue.handleCheckAndAskUseRemoteConfiguration(this._checkAndAskUseRemoteConfiguration.bind(this)); - services.tweakValue.handleAskUseRemoteConfiguration(this._askUseRemoteConfiguration.bind(this)); - services.replication.handleCheckConnectionFailure(this._anyAfterConnectCheckFailed.bind(this)); + services.tweakValue.fetchRemotePreferred.setHandler(this._fetchRemotePreferredTweakValues.bind(this)); + services.tweakValue.checkAndAskResolvingMismatched.setHandler( + this._checkAndAskResolvingMismatchedTweaks.bind(this) + ); + services.tweakValue.askResolvingMismatched.setHandler(this._askResolvingMismatchedTweaks.bind(this)); + services.tweakValue.checkAndAskUseRemoteConfiguration.setHandler( + this._checkAndAskUseRemoteConfiguration.bind(this) + ); + services.tweakValue.askUseRemoteConfiguration.setHandler(this._askUseRemoteConfiguration.bind(this)); + services.replication.checkConnectionFailure.addHandler(this._anyAfterConnectCheckFailed.bind(this)); } } diff --git a/src/modules/coreObsidian/ModuleFileAccessObsidian.ts b/src/modules/coreObsidian/ModuleFileAccessObsidian.ts index e7c617f..a7e58ed 100644 --- a/src/modules/coreObsidian/ModuleFileAccessObsidian.ts +++ b/src/modules/coreObsidian/ModuleFileAccessObsidian.ts @@ -386,11 +386,11 @@ export class ModuleFileAccessObsidian extends AbstractObsidianModule implements super(plugin, core); } onBindFunction(core: LiveSyncCore, services: InjectableServiceHub): void { - services.vault.handleIsStorageInsensitive(this._isStorageInsensitive.bind(this)); - services.setting.handleShouldCheckCaseInsensitively(this._shouldCheckCaseInsensitive.bind(this)); - services.appLifecycle.handleFirstInitialise(this._everyOnFirstInitialize.bind(this)); - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); - services.appLifecycle.handleOnLoaded(this._everyOnload.bind(this)); - services.fileProcessing.handleCommitPendingFileEvents(this._everyCommitPendingFileEvent.bind(this)); + services.vault.isStorageInsensitive.setHandler(this._isStorageInsensitive.bind(this)); + services.setting.shouldCheckCaseInsensitively.setHandler(this._shouldCheckCaseInsensitive.bind(this)); + services.appLifecycle.onFirstInitialise.addHandler(this._everyOnFirstInitialize.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); + services.appLifecycle.onLoaded.addHandler(this._everyOnload.bind(this)); + services.fileProcessing.commitPendingFileEvents.addHandler(this._everyCommitPendingFileEvent.bind(this)); } } diff --git a/src/modules/coreObsidian/ModuleInputUIObsidian.ts b/src/modules/coreObsidian/ModuleInputUIObsidian.ts index 7ddcdc1..c209116 100644 --- a/src/modules/coreObsidian/ModuleInputUIObsidian.ts +++ b/src/modules/coreObsidian/ModuleInputUIObsidian.ts @@ -113,6 +113,6 @@ export class ModuleInputUIObsidian extends AbstractObsidianModule implements Con } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnLoaded(this._everyOnload.bind(this)); + services.appLifecycle.onLoaded.addHandler(this._everyOnload.bind(this)); } } diff --git a/src/modules/essential/ModuleInitializerFile.ts b/src/modules/essential/ModuleInitializerFile.ts index a491296..b9dfb7e 100644 --- a/src/modules/essential/ModuleInitializerFile.ts +++ b/src/modules/essential/ModuleInitializerFile.ts @@ -397,7 +397,7 @@ export class ModuleInitializerFile extends AbstractModule { } } onBindFunction(core: LiveSyncCore, services: InjectableServiceHub): void { - services.databaseEvents.handleInitialiseDatabase(this._initializeDatabase.bind(this)); - services.vault.handleScanVault(this._performFullScan.bind(this)); + services.databaseEvents.initialiseDatabase.setHandler(this._initializeDatabase.bind(this)); + services.vault.scanVault.setHandler(this._performFullScan.bind(this)); } } diff --git a/src/modules/essential/ModuleKeyValueDB.ts b/src/modules/essential/ModuleKeyValueDB.ts index 0194649..3c58edf 100644 --- a/src/modules/essential/ModuleKeyValueDB.ts +++ b/src/modules/essential/ModuleKeyValueDB.ts @@ -4,6 +4,7 @@ import type { LiveSyncLocalDB } from "../../lib/src/pouchdb/LiveSyncLocalDB.ts"; import { LOG_LEVEL_NOTICE, LOG_LEVEL_VERBOSE } from "octagonal-wheels/common/logger"; import { AbstractModule } from "../AbstractModule.ts"; import type { LiveSyncCore } from "../../main.ts"; +import type { SimpleStore } from "octagonal-wheels/databases/SimpleStoreBase"; export class ModuleKeyValueDB extends AbstractModule { async tryCloseKvDB() { @@ -76,7 +77,7 @@ export class ModuleKeyValueDB extends AbstractModule { .filter((e) => e.startsWith(prefix)) .map((e) => e.substring(prefix.length)); }, - }; + } satisfies SimpleStore; } _everyOnInitializeDatabase(db: LiveSyncLocalDB): Promise { return this.openKeyValueDB(); @@ -100,11 +101,11 @@ export class ModuleKeyValueDB extends AbstractModule { return true; } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.databaseEvents.handleOnUnloadDatabase(this._onDBUnload.bind(this)); - services.databaseEvents.handleOnCloseDatabase(this._onDBClose.bind(this)); - services.databaseEvents.handleOnDatabaseInitialisation(this._everyOnInitializeDatabase.bind(this)); - services.databaseEvents.handleOnResetDatabase(this._everyOnResetDatabase.bind(this)); - services.database.handleOpenSimpleStore(this._getSimpleStore.bind(this)); - services.appLifecycle.handleOnSettingLoaded(this._everyOnloadAfterLoadSettings.bind(this)); + services.databaseEvents.onUnloadDatabase.addHandler(this._onDBUnload.bind(this)); + services.databaseEvents.onCloseDatabase.addHandler(this._onDBClose.bind(this)); + services.databaseEvents.onDatabaseInitialisation.addHandler(this._everyOnInitializeDatabase.bind(this)); + services.databaseEvents.onResetDatabase.addHandler(this._everyOnResetDatabase.bind(this)); + services.database.openSimpleStore.setHandler(this._getSimpleStore.bind(this)); + services.appLifecycle.onSettingLoaded.addHandler(this._everyOnloadAfterLoadSettings.bind(this)); } } diff --git a/src/modules/essential/ModuleMigration.ts b/src/modules/essential/ModuleMigration.ts index 5a10803..a50d25c 100644 --- a/src/modules/essential/ModuleMigration.ts +++ b/src/modules/essential/ModuleMigration.ts @@ -355,7 +355,7 @@ export class ModuleMigration extends AbstractModule { } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { super.onBindFunction(core, services); - services.appLifecycle.handleLayoutReady(this._everyOnLayoutReady.bind(this)); - services.appLifecycle.handleFirstInitialise(this._everyOnFirstInitialize.bind(this)); + services.appLifecycle.onLayoutReady.addHandler(this._everyOnLayoutReady.bind(this)); + services.appLifecycle.onFirstInitialise.addHandler(this._everyOnFirstInitialize.bind(this)); } } diff --git a/src/modules/essentialObsidian/ModuleCheckRemoteSize.ts b/src/modules/essentialObsidian/ModuleCheckRemoteSize.ts index bd9c8cf..136ef08 100644 --- a/src/modules/essentialObsidian/ModuleCheckRemoteSize.ts +++ b/src/modules/essentialObsidian/ModuleCheckRemoteSize.ts @@ -128,7 +128,7 @@ export class ModuleCheckRemoteSize extends AbstractObsidianModule { return Promise.resolve(true); } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnScanningStartupIssues(this._allScanStat.bind(this)); - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); + services.appLifecycle.onScanningStartupIssues.addHandler(this._allScanStat.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); } } diff --git a/src/modules/essentialObsidian/ModuleObsidianAPI.ts b/src/modules/essentialObsidian/ModuleObsidianAPI.ts index b19d82a..1ddc4fd 100644 --- a/src/modules/essentialObsidian/ModuleObsidianAPI.ts +++ b/src/modules/essentialObsidian/ModuleObsidianAPI.ts @@ -312,7 +312,7 @@ export class ModuleObsidianAPI extends AbstractObsidianModule { return `${"appId" in this.app ? this.app.appId : ""}`; } - private _reportUnresolvedMessages(): Promise { + private _reportUnresolvedMessages(): Promise<(string | Error)[]> { return Promise.resolve([...this._previousErrors]); } @@ -330,16 +330,16 @@ export class ModuleObsidianAPI extends AbstractObsidianModule { } onBindFunction(core: LiveSyncCore, services: typeof core.services) { - services.API.handleGetCustomFetchHandler(this._customFetchHandler.bind(this)); - services.API.handleIsLastPostFailedDueToPayloadSize(this._getLastPostFailedBySize.bind(this)); - services.remote.handleConnect(this._connectRemoteCouchDB.bind(this)); - services.API.handleIsMobile(this._isMobile.bind(this)); - services.vault.handleGetVaultName(this._getVaultName.bind(this)); - services.vault.handleVaultName(this._vaultName.bind(this)); - services.vault.handleGetActiveFilePath(this._getActiveFilePath.bind(this)); - services.API.handleGetAppID(this._anyGetAppId.bind(this)); - services.API.handleGetAppVersion(this._getAppVersion.bind(this)); - services.API.handleGetPluginVersion(this._getPluginVersion.bind(this)); - services.appLifecycle.reportUnresolvedMessages(this._reportUnresolvedMessages.bind(this)); + services.API.getCustomFetchHandler.setHandler(this._customFetchHandler.bind(this)); + services.API.isLastPostFailedDueToPayloadSize.setHandler(this._getLastPostFailedBySize.bind(this)); + services.remote.connect.setHandler(this._connectRemoteCouchDB.bind(this)); + services.API.isMobile.setHandler(this._isMobile.bind(this)); + services.vault.getVaultName.setHandler(this._getVaultName.bind(this)); + services.vault.vaultName.setHandler(this._vaultName.bind(this)); + services.vault.getActiveFilePath.setHandler(this._getActiveFilePath.bind(this)); + services.API.getAppID.setHandler(this._anyGetAppId.bind(this)); + services.API.getAppVersion.setHandler(this._getAppVersion.bind(this)); + services.API.getPluginVersion.setHandler(this._getPluginVersion.bind(this)); + services.appLifecycle.getUnresolvedMessages.addHandler(this._reportUnresolvedMessages.bind(this)); } } diff --git a/src/modules/essentialObsidian/ModuleObsidianEvents.ts b/src/modules/essentialObsidian/ModuleObsidianEvents.ts index 36bf1a4..fb896ad 100644 --- a/src/modules/essentialObsidian/ModuleObsidianEvents.ts +++ b/src/modules/essentialObsidian/ModuleObsidianEvents.ts @@ -244,10 +244,10 @@ export class ModuleObsidianEvents extends AbstractObsidianModule { } } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleLayoutReady(this._everyOnLayoutReady.bind(this)); - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); - services.appLifecycle.handlePerformRestart(this._performRestart.bind(this)); - services.appLifecycle.handleAskRestart(this._askReload.bind(this)); - services.appLifecycle.handleScheduleRestart(this._scheduleAppReload.bind(this)); + services.appLifecycle.onLayoutReady.addHandler(this._everyOnLayoutReady.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); + services.appLifecycle.performRestart.setHandler(this._performRestart.bind(this)); + services.appLifecycle.askRestart.setHandler(this._askReload.bind(this)); + services.appLifecycle.scheduleRestart.setHandler(this._scheduleAppReload.bind(this)); } } diff --git a/src/modules/essentialObsidian/ModuleObsidianMenu.ts b/src/modules/essentialObsidian/ModuleObsidianMenu.ts index e3c24aa..0186504 100644 --- a/src/modules/essentialObsidian/ModuleObsidianMenu.ts +++ b/src/modules/essentialObsidian/ModuleObsidianMenu.ts @@ -131,8 +131,8 @@ export class ModuleObsidianMenu extends AbstractObsidianModule { } } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); - services.appLifecycle.handleOnLoaded(this._everyOnload.bind(this)); - services.API.handleShowWindow(this._showView.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); + services.appLifecycle.onLoaded.addHandler(this._everyOnload.bind(this)); + services.API.showWindow.setHandler(this._showView.bind(this)); } } diff --git a/src/modules/extraFeaturesObsidian/ModuleExtraSyncObsidian.ts b/src/modules/extraFeaturesObsidian/ModuleExtraSyncObsidian.ts index 715e71f..256987a 100644 --- a/src/modules/extraFeaturesObsidian/ModuleExtraSyncObsidian.ts +++ b/src/modules/extraFeaturesObsidian/ModuleExtraSyncObsidian.ts @@ -12,7 +12,7 @@ export class ModuleExtraSyncObsidian extends AbstractObsidianModule { } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.setting.handleGetDeviceAndVaultName(this._getDeviceAndVaultName.bind(this)); - services.setting.handleSetDeviceAndVaultName(this._setDeviceAndVaultName.bind(this)); + services.setting.getDeviceAndVaultName.setHandler(this._getDeviceAndVaultName.bind(this)); + services.setting.setDeviceAndVaultName.setHandler(this._setDeviceAndVaultName.bind(this)); } } diff --git a/src/modules/extras/ModuleDev.ts b/src/modules/extras/ModuleDev.ts index 352d0d1..06f12e9 100644 --- a/src/modules/extras/ModuleDev.ts +++ b/src/modules/extras/ModuleDev.ts @@ -157,10 +157,10 @@ export class ModuleDev extends AbstractObsidianModule { return this.testDone(); } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleLayoutReady(this._everyOnLayoutReady.bind(this)); - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); - services.appLifecycle.handleOnSettingLoaded(this._everyOnloadAfterLoadSettings.bind(this)); - services.test.handleTest(this._everyModuleTest.bind(this)); - services.test.handleAddTestResult(this._addTestResult.bind(this)); + services.appLifecycle.onLayoutReady.addHandler(this._everyOnLayoutReady.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); + services.appLifecycle.onSettingLoaded.addHandler(this._everyOnloadAfterLoadSettings.bind(this)); + services.test.test.addHandler(this._everyModuleTest.bind(this)); + services.test.addTestResult.setHandler(this._addTestResult.bind(this)); } } diff --git a/src/modules/extras/ModuleIntegratedTest.ts b/src/modules/extras/ModuleIntegratedTest.ts index fa2934f..a5b724f 100644 --- a/src/modules/extras/ModuleIntegratedTest.ts +++ b/src/modules/extras/ModuleIntegratedTest.ts @@ -441,6 +441,6 @@ Line4:D`; return Promise.resolve(true); } onBindFunction(core: typeof this.core, services: typeof core.services): void { - services.test.handleTestMultiDevice(this._everyModuleTestMultiDevice.bind(this)); + services.test.testMultiDevice.addHandler(this._everyModuleTestMultiDevice.bind(this)); } } diff --git a/src/modules/extras/ModuleReplicateTest.ts b/src/modules/extras/ModuleReplicateTest.ts index a389067..2911217 100644 --- a/src/modules/extras/ModuleReplicateTest.ts +++ b/src/modules/extras/ModuleReplicateTest.ts @@ -581,8 +581,8 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ`; return this.testDone(); } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnSettingLoaded(this._everyOnloadAfterLoadSettings.bind(this)); - services.replication.handleBeforeReplicate(this._everyBeforeReplicate.bind(this)); - services.test.handleTestMultiDevice(this._everyModuleTestMultiDevice.bind(this)); + services.appLifecycle.onSettingLoaded.addHandler(this._everyOnloadAfterLoadSettings.bind(this)); + services.replication.onBeforeReplicate.addHandler(this._everyBeforeReplicate.bind(this)); + services.test.testMultiDevice.addHandler(this._everyModuleTestMultiDevice.bind(this)); } } diff --git a/src/modules/features/ModuleGlobalHistory.ts b/src/modules/features/ModuleGlobalHistory.ts index fcc7581..5dc6374 100644 --- a/src/modules/features/ModuleGlobalHistory.ts +++ b/src/modules/features/ModuleGlobalHistory.ts @@ -20,6 +20,6 @@ export class ModuleObsidianGlobalHistory extends AbstractObsidianModule { void this.services.API.showWindow(VIEW_TYPE_GLOBAL_HISTORY); } onBindFunction(core: typeof this.core, services: typeof core.services): void { - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); } } diff --git a/src/modules/features/ModuleInteractiveConflictResolver.ts b/src/modules/features/ModuleInteractiveConflictResolver.ts index 4c1ec63..aebd806 100644 --- a/src/modules/features/ModuleInteractiveConflictResolver.ts +++ b/src/modules/features/ModuleInteractiveConflictResolver.ts @@ -165,8 +165,8 @@ export class ModuleInteractiveConflictResolver extends AbstractObsidianModule { return true; } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnScanningStartupIssues(this._allScanStat.bind(this)); - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); - services.conflict.handleResolveByUserInteraction(this._anyResolveConflictByUI.bind(this)); + services.appLifecycle.onScanningStartupIssues.addHandler(this._allScanStat.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); + services.conflict.resolveByUserInteraction.addHandler(this._anyResolveConflictByUI.bind(this)); } } diff --git a/src/modules/features/ModuleLog.ts b/src/modules/features/ModuleLog.ts index 0c64834..f841256 100644 --- a/src/modules/features/ModuleLog.ts +++ b/src/modules/features/ModuleLog.ts @@ -495,9 +495,9 @@ export class ModuleLog extends AbstractObsidianModule { } } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); - services.appLifecycle.handleOnSettingLoaded(this._everyOnloadAfterLoadSettings.bind(this)); - services.appLifecycle.handleOnLoaded(this._everyOnload.bind(this)); - services.appLifecycle.handleOnBeforeUnload(this._allStartOnUnload.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); + services.appLifecycle.onSettingLoaded.addHandler(this._everyOnloadAfterLoadSettings.bind(this)); + services.appLifecycle.onLoaded.addHandler(this._everyOnload.bind(this)); + services.appLifecycle.onBeforeUnload.addHandler(this._allStartOnUnload.bind(this)); } } diff --git a/src/modules/features/ModuleObsidianDocumentHistory.ts b/src/modules/features/ModuleObsidianDocumentHistory.ts index 2de7d41..2b89490 100644 --- a/src/modules/features/ModuleObsidianDocumentHistory.ts +++ b/src/modules/features/ModuleObsidianDocumentHistory.ts @@ -52,6 +52,6 @@ export class ModuleObsidianDocumentHistory extends AbstractObsidianModule { } } onBindFunction(core: typeof this.core, services: typeof core.services): void { - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); } } diff --git a/src/modules/features/ModuleObsidianSetting.ts b/src/modules/features/ModuleObsidianSetting.ts index cf3eaeb..873479c 100644 --- a/src/modules/features/ModuleObsidianSetting.ts +++ b/src/modules/features/ModuleObsidianSetting.ts @@ -323,13 +323,13 @@ export class ModuleObsidianSettings extends AbstractObsidianModule { onBindFunction(core: LiveSyncCore, services: typeof core.services): void { super.onBindFunction(core, services); - services.appLifecycle.handleLayoutReady(this._everyOnLayoutReady.bind(this)); - services.setting.handleClearUsedPassphrase(this._clearUsedPassphrase.bind(this)); - services.setting.handleDecryptSettings(this._decryptSettings.bind(this)); - services.setting.handleAdjustSettings(this._adjustSettings.bind(this)); - services.setting.handleLoadSettings(this._loadSettings.bind(this)); - services.setting.handleCurrentSettings(this._currentSettings.bind(this)); - services.setting.handleSaveDeviceAndVaultName(this._saveDeviceAndVaultName.bind(this)); - services.setting.handleSaveSettingData(this._saveSettingData.bind(this)); + services.appLifecycle.onLayoutReady.addHandler(this._everyOnLayoutReady.bind(this)); + services.setting.clearUsedPassphrase.setHandler(this._clearUsedPassphrase.bind(this)); + services.setting.decryptSettings.setHandler(this._decryptSettings.bind(this)); + services.setting.adjustSettings.setHandler(this._adjustSettings.bind(this)); + services.setting.loadSettings.setHandler(this._loadSettings.bind(this)); + services.setting.currentSettings.setHandler(this._currentSettings.bind(this)); + services.setting.saveDeviceAndVaultName.setHandler(this._saveDeviceAndVaultName.bind(this)); + services.setting.saveSettingData.setHandler(this._saveSettingData.bind(this)); } } diff --git a/src/modules/features/ModuleObsidianSettingAsMarkdown.ts b/src/modules/features/ModuleObsidianSettingAsMarkdown.ts index d9c4ff7..c84534f 100644 --- a/src/modules/features/ModuleObsidianSettingAsMarkdown.ts +++ b/src/modules/features/ModuleObsidianSettingAsMarkdown.ts @@ -243,6 +243,6 @@ We can perform a command in this file. } } onBindFunction(core: typeof this.plugin, services: typeof core.services): void { - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); } } diff --git a/src/modules/features/ModuleObsidianSettingTab.ts b/src/modules/features/ModuleObsidianSettingTab.ts index 48997ab..e150bd8 100644 --- a/src/modules/features/ModuleObsidianSettingTab.ts +++ b/src/modules/features/ModuleObsidianSettingTab.ts @@ -30,6 +30,6 @@ export class ModuleObsidianSettingDialogue extends AbstractObsidianModule { return `${"appId" in this.app ? this.app.appId : ""}`; } onBindFunction(core: typeof this.plugin, services: typeof core.services): void { - services.appLifecycle.handleOnInitialise(this._everyOnloadStart.bind(this)); + services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); } } diff --git a/src/modules/features/ModuleSetupObsidian.ts b/src/modules/features/ModuleSetupObsidian.ts index 494b571..ca466af 100644 --- a/src/modules/features/ModuleSetupObsidian.ts +++ b/src/modules/features/ModuleSetupObsidian.ts @@ -195,6 +195,6 @@ export class ModuleSetupObsidian extends AbstractObsidianModule { // } onBindFunction(core: LiveSyncCore, services: typeof core.services): void { - services.appLifecycle.handleOnLoaded(this._everyOnload.bind(this)); + services.appLifecycle.onLoaded.addHandler(this._everyOnload.bind(this)); } } diff --git a/src/modules/features/SetupWizard/dialogs/SetupRemoteP2P.svelte b/src/modules/features/SetupWizard/dialogs/SetupRemoteP2P.svelte index 7cfe0fc..3ab053c 100644 --- a/src/modules/features/SetupWizard/dialogs/SetupRemoteP2P.svelte +++ b/src/modules/features/SetupWizard/dialogs/SetupRemoteP2P.svelte @@ -93,6 +93,9 @@ keys: () => { return Promise.resolve(Array.from(map.keys())); }, + get db() { + return Promise.resolve(this); + }, } as SimpleStore; const dummyPouch = new PouchDB("dummy"); diff --git a/src/modules/main/ModuleLiveSyncMain.ts b/src/modules/main/ModuleLiveSyncMain.ts index 9aa5ff0..5fa27b3 100644 --- a/src/modules/main/ModuleLiveSyncMain.ts +++ b/src/modules/main/ModuleLiveSyncMain.ts @@ -208,17 +208,17 @@ export class ModuleLiveSyncMain extends AbstractModule { onBindFunction(core: LiveSyncCore, services: InjectableServiceHub): void { super.onBindFunction(core, services); - services.appLifecycle.handleIsSuspended(this._isSuspended.bind(this)); - services.appLifecycle.handleSetSuspended(this._setSuspended.bind(this)); - services.appLifecycle.handleIsReady(this._isReady.bind(this)); - services.appLifecycle.handleMarkIsReady(this._markIsReady.bind(this)); - services.appLifecycle.handleResetIsReady(this._resetIsReady.bind(this)); - services.appLifecycle.handleHasUnloaded(this._isUnloaded.bind(this)); - services.appLifecycle.handleIsReloadingScheduled(this._isReloadingScheduled.bind(this)); - services.appLifecycle.handleOnReady(this._onLiveSyncReady.bind(this)); - services.appLifecycle.handleOnWireUpEvents(this._wireUpEvents.bind(this)); - services.appLifecycle.handleOnLoad(this._onLiveSyncLoad.bind(this)); - services.appLifecycle.handleOnAppUnload(this._onLiveSyncUnload.bind(this)); - services.setting.handleRealiseSetting(this._realizeSettingSyncMode.bind(this)); + services.appLifecycle.isSuspended.setHandler(this._isSuspended.bind(this)); + services.appLifecycle.setSuspended.setHandler(this._setSuspended.bind(this)); + services.appLifecycle.isReady.setHandler(this._isReady.bind(this)); + services.appLifecycle.markIsReady.setHandler(this._markIsReady.bind(this)); + services.appLifecycle.resetIsReady.setHandler(this._resetIsReady.bind(this)); + services.appLifecycle.hasUnloaded.setHandler(this._isUnloaded.bind(this)); + services.appLifecycle.isReloadingScheduled.setHandler(this._isReloadingScheduled.bind(this)); + services.appLifecycle.onReady.addHandler(this._onLiveSyncReady.bind(this)); + services.appLifecycle.onWireUpEvents.addHandler(this._wireUpEvents.bind(this)); + services.appLifecycle.onLoad.addHandler(this._onLiveSyncLoad.bind(this)); + services.appLifecycle.onAppUnload.addHandler(this._onLiveSyncUnload.bind(this)); + services.setting.realiseSetting.setHandler(this._realizeSettingSyncMode.bind(this)); } } diff --git a/src/modules/services/ObsidianServices.ts b/src/modules/services/ObsidianServices.ts index 04259e5..7acd888 100644 --- a/src/modules/services/ObsidianServices.ts +++ b/src/modules/services/ObsidianServices.ts @@ -1,7 +1,9 @@ +import { ServiceContext, type ServiceInstances } from "@/lib/src/services/ServiceHub.ts"; import { InjectableAPIService, InjectableAppLifecycleService, InjectableConflictService, + InjectableDatabaseEventService, InjectableDatabaseService, InjectableFileProcessingService, InjectablePathService, @@ -17,79 +19,96 @@ import { InjectableServiceHub } from "../../lib/src/services/InjectableServices. import { ConfigServiceBrowserCompat } from "../../lib/src/services/Services.ts"; import type ObsidianLiveSyncPlugin from "../../main.ts"; import { ObsidianUIService } from "./ObsidianUIService.ts"; +import type { App, Plugin } from "@/deps"; + +export class ObsidianServiceContext extends ServiceContext { + app: App; + plugin: Plugin; + liveSyncPlugin: ObsidianLiveSyncPlugin; + constructor(app: App, plugin: Plugin, liveSyncPlugin: ObsidianLiveSyncPlugin) { + super(); + this.app = app; + this.plugin = plugin; + this.liveSyncPlugin = liveSyncPlugin; + } +} + // All Services will be migrated to be based on Plain Services, not Injectable Services. // This is a migration step. -export class ObsidianAPIService extends InjectableAPIService { +export class ObsidianAPIService extends InjectableAPIService { getPlatform(): string { return "obsidian"; } } -export class ObsidianPathService extends InjectablePathService {} -export class ObsidianDatabaseService extends InjectableDatabaseService {} +export class ObsidianPathService extends InjectablePathService {} +export class ObsidianDatabaseService extends InjectableDatabaseService {} +export class ObsidianDatabaseEventService extends InjectableDatabaseEventService {} // InjectableReplicatorService -export class ObsidianReplicatorService extends InjectableReplicatorService {} +export class ObsidianReplicatorService extends InjectableReplicatorService {} // InjectableFileProcessingService -export class ObsidianFileProcessingService extends InjectableFileProcessingService {} +export class ObsidianFileProcessingService extends InjectableFileProcessingService {} // InjectableReplicationService -export class ObsidianReplicationService extends InjectableReplicationService {} +export class ObsidianReplicationService extends InjectableReplicationService {} // InjectableRemoteService -export class ObsidianRemoteService extends InjectableRemoteService {} +export class ObsidianRemoteService extends InjectableRemoteService {} // InjectableConflictService -export class ObsidianConflictService extends InjectableConflictService {} +export class ObsidianConflictService extends InjectableConflictService {} // InjectableAppLifecycleService -export class ObsidianAppLifecycleService extends InjectableAppLifecycleService {} +export class ObsidianAppLifecycleService extends InjectableAppLifecycleService {} // InjectableSettingService -export class ObsidianSettingService extends InjectableSettingService {} +export class ObsidianSettingService extends InjectableSettingService {} // InjectableTweakValueService -export class ObsidianTweakValueService extends InjectableTweakValueService {} +export class ObsidianTweakValueService extends InjectableTweakValueService {} // InjectableVaultService -export class ObsidianVaultService extends InjectableVaultService {} +export class ObsidianVaultService extends InjectableVaultService {} // InjectableTestService -export class ObsidianTestService extends InjectableTestService {} - -export class ObsidianConfigService extends ConfigServiceBrowserCompat {} +export class ObsidianTestService extends InjectableTestService {} +export class ObsidianConfigService extends ConfigServiceBrowserCompat {} // InjectableServiceHub -export class ObsidianServiceHub extends InjectableServiceHub { - protected _api: ObsidianAPIService = new ObsidianAPIService(this._serviceBackend, this._throughHole); - protected _path: ObsidianPathService = new ObsidianPathService(this._serviceBackend, this._throughHole); - protected _database: ObsidianDatabaseService = new ObsidianDatabaseService(this._serviceBackend, this._throughHole); - protected _replicator: ObsidianReplicatorService = new ObsidianReplicatorService( - this._serviceBackend, - this._throughHole - ); - protected _fileProcessing: ObsidianFileProcessingService = new ObsidianFileProcessingService( - this._serviceBackend, - this._throughHole - ); - protected _replication: ObsidianReplicationService = new ObsidianReplicationService( - this._serviceBackend, - this._throughHole - ); - protected _remote: ObsidianRemoteService = new ObsidianRemoteService(this._serviceBackend, this._throughHole); - protected _conflict: ObsidianConflictService = new ObsidianConflictService(this._serviceBackend, this._throughHole); - protected _appLifecycle: ObsidianAppLifecycleService = new ObsidianAppLifecycleService( - this._serviceBackend, - this._throughHole - ); - protected _setting: ObsidianSettingService = new ObsidianSettingService(this._serviceBackend, this._throughHole); - protected _tweakValue: ObsidianTweakValueService = new ObsidianTweakValueService( - this._serviceBackend, - this._throughHole - ); - protected _vault: ObsidianVaultService = new ObsidianVaultService(this._serviceBackend, this._throughHole); - protected _test: ObsidianTestService = new ObsidianTestService(this._serviceBackend, this._throughHole); - - private _plugin: ObsidianLiveSyncPlugin; +export class ObsidianServiceHub extends InjectableServiceHub { constructor(plugin: ObsidianLiveSyncPlugin) { - const config = new ObsidianConfigService(); - super({ - ui: new ObsidianUIService(plugin), + const context = new ObsidianServiceContext(plugin.app, plugin, plugin); + + const API = new ObsidianAPIService(context); + const appLifecycle = new ObsidianAppLifecycleService(context); + const conflict = new ObsidianConflictService(context); + const database = new ObsidianDatabaseService(context); + const fileProcessing = new ObsidianFileProcessingService(context); + const replication = new ObsidianReplicationService(context); + const replicator = new ObsidianReplicatorService(context); + const remote = new ObsidianRemoteService(context); + const setting = new ObsidianSettingService(context); + const tweakValue = new ObsidianTweakValueService(context); + const vault = new ObsidianVaultService(context); + const test = new ObsidianTestService(context); + const databaseEvents = new ObsidianDatabaseEventService(context); + const path = new ObsidianPathService(context); + const ui = new ObsidianUIService(context); + const config = new ObsidianConfigService(context, vault); + // Using 'satisfies' to ensure all services are provided + const serviceInstancesToInit = { + appLifecycle: appLifecycle, + conflict: conflict, + database: database, + databaseEvents: databaseEvents, + fileProcessing: fileProcessing, + replication: replication, + replicator: replicator, + remote: remote, + setting: setting, + tweakValue: tweakValue, + vault: vault, + test: test, + ui: ui, + path: path, + API: API, config: config, - }); - this._plugin = plugin; + } satisfies Required>; + + super(context, serviceInstancesToInit); } } diff --git a/src/modules/services/ObsidianUIService.ts b/src/modules/services/ObsidianUIService.ts index 1c8c522..21bbf90 100644 --- a/src/modules/services/ObsidianUIService.ts +++ b/src/modules/services/ObsidianUIService.ts @@ -1,19 +1,24 @@ import { UIService } from "../../lib/src/services/Services"; -import type ObsidianLiveSyncPlugin from "../../main"; +import type { Plugin } from "@/deps"; import { SvelteDialogManager } from "../features/SetupWizard/ObsidianSvelteDialog"; import DialogueToCopy from "../../lib/src/UI/dialogues/DialogueToCopy.svelte"; +import type { ObsidianServiceContext } from "./ObsidianServices"; +import type ObsidianLiveSyncPlugin from "@/main"; -export class ObsidianUIService extends UIService { +export class ObsidianUIService extends UIService { private _dialogManager: SvelteDialogManager; - private _plugin: ObsidianLiveSyncPlugin; + private _plugin: Plugin; + private _liveSyncPlugin: ObsidianLiveSyncPlugin; get dialogManager() { return this._dialogManager; } - constructor(plugin: ObsidianLiveSyncPlugin) { - super(); - this._dialogManager = new SvelteDialogManager(plugin); - this._plugin = plugin; + constructor(context: ObsidianServiceContext) { + super(context); + this._liveSyncPlugin = context.liveSyncPlugin; + this._dialogManager = new SvelteDialogManager(this._liveSyncPlugin); + this._plugin = context.plugin; } + async promptCopyToClipboard(title: string, value: string): Promise { const param = { title: title, @@ -25,13 +30,15 @@ export class ObsidianUIService extends UIService { } return true; } + showMarkdownDialog( title: string, contentMD: string, buttons: T, defaultAction?: (typeof buttons)[number] ): Promise<(typeof buttons)[number] | false> { - return this._plugin.confirm.askSelectStringDialogue(contentMD, buttons, { + // TODO: implement `confirm` to this service + return this._liveSyncPlugin.confirm.askSelectStringDialogue(contentMD, buttons, { title, defaultAction: defaultAction ?? buttons[0], timeout: 0,