From d820285d1e5d0a8fa83ec40aa065dcbdee0f9276 Mon Sep 17 00:00:00 2001 From: Vijayasantham <70528700+vijayasantham12@users.noreply.github.com> Date: Thu, 8 Feb 2024 09:28:57 +0530 Subject: [PATCH] Fix: Save on sync issue (#486) * Fix: Save on sync issue * Fix: Add delay before run sync on save --- src/main.ts | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/src/main.ts b/src/main.ts index cae7a2e..87c1b5c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1076,6 +1076,19 @@ export default class RemotelySavePlugin extends Plugin { this.settings.syncOnSaveAfterMilliseconds > 0 ) { let runScheduled = false; + let needToRunAgain = false; + + const SheduleSaveOnSync = (scheduleTimeFromNow: number) => { + log.info( + `schedule a run for ${scheduleTimeFromNow} milliseconds later`, + ); + runScheduled = true; + setTimeout(() => { + this.syncRun("auto_sync_on_save"); + runScheduled = false; + }, scheduleTimeFromNow); + }; + this.app.workspace.onLayoutReady(() => { const intervalID = window.setInterval(() => { const currentFile = this.app.workspace.getActiveFile(); @@ -1086,29 +1099,24 @@ export default class RemotelySavePlugin extends Plugin { // then schedule a run for syncOnSaveAfterMilliseconds after it was modified const lastModified = currentFile.stat.mtime; const currentTime = Date.now(); - // log.debug( - // `Checking if file was modified within last ${ - // this.settings.syncOnSaveAfterMilliseconds / 1000 - // } seconds, last modified: ${ - // (currentTime - lastModified) / 1000 - // } seconds ago` - // ); if ( currentTime - lastModified < this.settings!.syncOnSaveAfterMilliseconds! ) { - if (!runScheduled) { + if ( + !needToRunAgain && + !runScheduled && + this.syncStatus === "idle" + ) { const scheduleTimeFromNow = this.settings!.syncOnSaveAfterMilliseconds! - (currentTime - lastModified); - log.info( - `schedule a run for ${scheduleTimeFromNow} milliseconds later` - ); - runScheduled = true; - setTimeout(() => { - this.syncRun("auto_sync_on_save"); - runScheduled = false; - }, scheduleTimeFromNow); + SheduleSaveOnSync(scheduleTimeFromNow); + } else if (needToRunAgain && !runScheduled && this.syncStatus === "idle") { + SheduleSaveOnSync(this.settings!.syncOnSaveAfterMilliseconds!); + needToRunAgain = false; + } else { + needToRunAgain = true; } } }