From 142f4ae653fb732b3ec80d00dd181445c669823a Mon Sep 17 00:00:00 2001 From: Raphael Forment Date: Fri, 10 Nov 2023 20:18:22 +0100 Subject: [PATCH] add auto-save mechanism every 5 seconds --- src/WindowBehavior.ts | 2 +- src/main.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/WindowBehavior.ts b/src/WindowBehavior.ts index 44ae5c4..b829e3f 100644 --- a/src/WindowBehavior.ts +++ b/src/WindowBehavior.ts @@ -16,7 +16,7 @@ const handleResize = (canvas: HTMLCanvasElement) => { } }; -const saveBeforeExit = (app: Editor): null => { +export const saveBeforeExit = (app: Editor): null => { // @ts-ignore event.preventDefault(); // Iterate over all local files and set the candidate to the committed diff --git a/src/main.ts b/src/main.ts index 0e1249e..26e77dd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -24,7 +24,7 @@ import { tryEvaluate } from "./Evaluator"; import showdown from "showdown"; import { makeStringExtensions } from "./StringExtensions"; import { installInterfaceLogic } from "./InterfaceLogic"; -import { installWindowBehaviors } from "./WindowBehavior"; +import { installWindowBehaviors, saveBeforeExit } from "./WindowBehavior"; import { drawEmptyBlinkers } from "./AudioVisualisation"; // @ts-ignore import { registerSW } from "virtual:pwa-register"; @@ -170,6 +170,8 @@ export class Editor { // Loading universe from URL (if needed) loadUniverserFromUrl(this); + + this.setPeriodicSave(5000); } private getBuffer(type: string): any { @@ -466,7 +468,7 @@ export class Editor { console.log("Hydra loaded successfully"); this.initializeHydra(); }; - script.onerror = function () { + script.onerror = function() { console.error("Error loading Hydra script"); }; document.head.appendChild(script); @@ -496,6 +498,10 @@ export class Editor { ctx.scale(dpr, dpr); } } + + private setPeriodicSave(interval: number): void { + setInterval(saveBeforeExit(this), interval) + } } let app = new Editor();