Register polling fetcher

This commit is contained in:
Andras Schmelczer 2024-12-15 11:53:20 +00:00
parent 48d407cf1e
commit d7ff0f0bed
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C

View file

@ -19,8 +19,11 @@ import { Logger } from "./logger.js";
import { SyncEventHandler } from "./events/sync-event-handler.js";
import { SyncServer } from "./services/sync_service.js";
import { Database } from "./database/database.js";
import { applyRemoteChangesLocally } from "./apply-remote-changes-locally.js";
export default class SyncPlugin extends Plugin {
private remoteListenerIntervalId: number | null = null;
async onload() {
Logger.getInstance().info('Starting plugin "Sample Plugin"');
@ -67,9 +70,19 @@ export default class SyncPlugin extends Plugin {
),
].forEach((event) => this.registerEvent(event));
this.registerInterval(
window.setInterval(() => console.log("setInterval"), 5 * 60 * 1000)
this.registerRemoteEventListener(
database,
syncServer,
database.getSettings().fetchChangesUpdateInterval
);
database.addOnSettingsChangeHandlers((settings) => {
this.registerRemoteEventListener(
database,
syncServer,
settings.fetchChangesUpdateInterval
);
});
this.registerView(SyncView.TYPE, (leaf) => new SyncView(leaf));
const ribbonIconEl = this.addRibbonIcon(
@ -101,4 +114,26 @@ export default class SyncPlugin extends Plugin {
// "Reveal" the leaf in case it is in a collapsed sidebar
workspace.revealLeaf(leaf!);
}
unload(): void {
if (this.remoteListenerIntervalId) {
window.clearInterval(this.remoteListenerIntervalId);
}
}
private registerRemoteEventListener(
database: Database,
syncServer: SyncServer,
intervalMs: number
) {
if (this.remoteListenerIntervalId) {
window.clearInterval(this.remoteListenerIntervalId);
}
this.remoteListenerIntervalId = window.setInterval(
() =>
applyRemoteChangesLocally(database, syncServer, this.app.vault),
intervalMs
);
}
}