From 2d72f5901dec7de1f3c3da4f51e830ee4ff053a0 Mon Sep 17 00:00:00 2001 From: Toyin Date: Thu, 25 Dec 2025 18:21:35 +0100 Subject: [PATCH] feat: incremental save --- index.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/index.ts b/index.ts index 63f13b5..9cfbd80 100644 --- a/index.ts +++ b/index.ts @@ -883,8 +883,21 @@ class CanvasApp { private doSaveFile(filename: string): void { try { - const filePath = path.resolve(filename) + let filePath = path.resolve(filename) const data = this.toFileData() + //check if filename already exists + if (fs.existsSync(filePath)) { + let counter = 1 + let newFilePath = filePath + const ext = path.extname(filePath) + const baseName = path.basename(filePath, ext) + const dirName = path.dirname(filePath) + while (fs.existsSync(newFilePath)) { + newFilePath = path.join(dirName, `${baseName}(${counter})${ext}`) + counter++ + } + filePath = newFilePath + } fs.writeFileSync(filePath, JSON.stringify(data, null, 2)) this.currentFilePath = filePath this.saveStatusMessage = `Saved to ${path.basename(filePath)}`