Fix: Save on sync issue (#486)

* Fix: Save on sync issue

* Fix: Add delay before run sync on save
This commit is contained in:
Vijayasantham 2024-02-08 09:28:57 +05:30 committed by GitHub
parent a6002ba340
commit d820285d1e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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;
}
}
}