mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-01-25 22:47:11 +00:00
- Rewrite the service's binding/handler assignment systems - Removed loopholes that allowed traversal between services to clarify dependencies. - Consolidated the hidden state-related state, the handler, and the addition of bindings to the handler into a single object. - Currently, functions that can have handlers added implement either addHandler or setHandler directly on the function itself. I understand there are differing opinions on this, but for now, this is how it stands. - Services now possess a Context. Please ensure each platform has a class that inherits from ServiceContext. - To permit services to be dynamically bound, the services themselves are now defined by interfaces.
42 lines
1.7 KiB
TypeScript
42 lines
1.7 KiB
TypeScript
import { PeriodicProcessor } from "../../common/utils";
|
|
import type { LiveSyncCore } from "../../main";
|
|
import { AbstractModule } from "../AbstractModule";
|
|
|
|
export class ModulePeriodicProcess extends AbstractModule {
|
|
periodicSyncProcessor = new PeriodicProcessor(this.core, async () => await this.services.replication.replicate());
|
|
|
|
disablePeriodic() {
|
|
this.periodicSyncProcessor?.disable();
|
|
return Promise.resolve(true);
|
|
}
|
|
resumePeriodic() {
|
|
this.periodicSyncProcessor.enable(
|
|
this.settings.periodicReplication ? this.settings.periodicReplicationInterval * 1000 : 0
|
|
);
|
|
return Promise.resolve(true);
|
|
}
|
|
private _allOnUnload() {
|
|
return this.disablePeriodic();
|
|
}
|
|
private _everyBeforeRealizeSetting(): Promise<boolean> {
|
|
return this.disablePeriodic();
|
|
}
|
|
private _everyBeforeSuspendProcess(): Promise<boolean> {
|
|
return this.disablePeriodic();
|
|
}
|
|
private _everyAfterResumeProcess(): Promise<boolean> {
|
|
return this.resumePeriodic();
|
|
}
|
|
private _everyAfterRealizeSetting(): Promise<boolean> {
|
|
return this.resumePeriodic();
|
|
}
|
|
|
|
onBindFunction(core: LiveSyncCore, services: typeof core.services): void {
|
|
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));
|
|
}
|
|
}
|