From c7ada6a178028cdf256a74d87cfd58e2e72cef32 Mon Sep 17 00:00:00 2001 From: tconfrey Date: Thu, 20 Feb 2025 16:45:49 -0500 Subject: [PATCH] check for newer synced file before saving --- app/bt.js | 1 + app/fileManager.js | 16 +++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/bt.js b/app/bt.js index b2461fb..2d48e04 100644 --- a/app/bt.js +++ b/app/bt.js @@ -1032,6 +1032,7 @@ function tabPositioned(data, highlight = false) { const windowId = data.windowId; const parentId = AllNodes[nodeId]?.parentId || nodeId; + if (!node) return; node.tabId = tabId; node.windowId = windowId; node.tabIndex = tabIndex; diff --git a/app/fileManager.js b/app/fileManager.js index a920378..82482e1 100644 --- a/app/fileManager.js +++ b/app/fileManager.js @@ -74,18 +74,24 @@ async function saveBT(localOnly = false, newContent = true) { InitialInstall = false; } - // also save to GDrive or local file if connected and drop an event - let event = "local_storage_save"; + // also check before saving, save to GDrive or local file if connected and drop an event + let eventType = "local_storage_save"; + const warnNewer = await checkBTFileVersion(); + if ((warnNewer) && + (confirm("The synced version of your BrainTool file has newer data. \n\nClick OK the refresh from it, or Cancel to overwrite with this change."))) { + refreshTable(true); + return; + } if (GDriveConnected) { await gDriveFileManager.saveBT(BTFileText, newContent); // if !newContent, don't force re-auth - event = "gdrive_save"; + eventType = "gdrive_save"; } else if (LocalFileConnected) { await localFileManager.saveBT(BTFileText); - event = "local_file_save"; + eventType = "local_file_save"; } updateStatsRow(); // update num cards etc messageManager.removeWarning(); // remove stale warning if any - gtag('event', event, {'event_category': 'Save', 'event_label': 'NumNodes', 'value': AllNodes.length}); + gtag('event', eventType, {'event_category': 'Save', 'event_label': 'NumNodes', 'value': AllNodes.length}); configManager.incrementStat('BTNumSaves'); }