From 438d3ef39f2018ff4e5b86736ef7f4b735dac665 Mon Sep 17 00:00:00 2001 From: Alex Pankratov Date: Sun, 25 Apr 2021 16:04:11 +0200 Subject: [PATCH] keep backupStatus of the app's config --- nullboard.html | 70 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 53 insertions(+), 17 deletions(-) diff --git a/nullboard.html b/nullboard.html index 9730e8c..f0adf7b 100644 --- a/nullboard.html +++ b/nullboard.html @@ -1685,7 +1685,6 @@ function AppConfig() { - this.format = NB.confVersion; this.verLast = null; // last used codeVersion this.verSeen = null; // latest codeVersion they saw the changelog for @@ -1703,6 +1702,8 @@ agents : [ ], // [ { type, id, enabled, conf } ]; nextId : 1 }; + + this.backupStatus = new Map(); // agentId => [ 'conf' ] } function BoardMeta() @@ -1711,7 +1712,7 @@ this.current = 1; // revision this.ui_spot = 0; // 0 = not set this.history = [ ]; // revision IDs - this.backups = [ ]; // agents that this board is backed up with + this.backupStatus = new Map(); // agentId => [ what's backed up ] } class Storage @@ -1881,8 +1882,6 @@ meta.history = rebuild; } - meta.backups = []; - /* * save meta */ @@ -2001,6 +2000,8 @@ meta.ui_spot = ui_spot; + this.backupBoard(board_id, null, meta); + return this.setJson('board.' + board_id + '.meta', meta); } @@ -2076,7 +2077,7 @@ conf: { base: '', auth: '' } }) - NB.storage.saveConfig(); + self.saveConfig(); } } @@ -2118,26 +2119,40 @@ backupBoard(board_id, board, meta) { var self = this; + var was = meta.backups || new Map(); + + meta.backupStatus = new Map(); if (! this.backups.agents.length) { - meta.backups = []; + if (was.size) + self.setJson('board.' + board_id + '.meta', meta); return; } - meta.backups = []; - console.log( `Backing up ${board_id}...` ); this.backups.agents.forEach(function(agent){ + var fields = was.get(agent.id) || { }; + + if (board) delete fields.data; + if (meta) delete fields.meta; + + meta.backupStatus.set(agent.id, fields); + agent.saveBoard(board_id, board, meta, function(){ var what = 'Backup of ' + board_id + (board ? '' : ' (meta)'); console.log( `${what} to '${agent.id}' -> ${agent.status}` ); if (agent.status == 'ready') - meta.backups.push(agent.id); + { + if (board) fields.data = + new Date(); + if (meta) fields.meta = + new Date(); + + meta.backupStatus.set(agent.id, fields); + } self.setJson('board.' + board_id + '.meta', meta); }); @@ -2147,12 +2162,33 @@ backupConfig() { var self = this; + var was = self.conf.backupStatus || new Map(); + + self.conf.backupStatus = new Map(); if (! this.backups.agents.length) + { + if (was.size) + this.setJson('config', this.conf); return; + } this.backups.agents.forEach(function(agent){ - agent.saveConfig(self.conf, function(){}); + + var fields = { }; + + self.conf.backupStatus.set(agent.id, fields); + + agent.saveConfig(self.conf, function(){ + + if (agent.status == 'ready') + { + fields.conf = + new Date() + self.conf.backupStatus.set(agent.id, fields); + } + + self.setJson('config', this.conf); + }); }); } }; @@ -2187,13 +2223,13 @@ var conf = this.getJson('config'); var newInstall = true; - if (conf && (conf.format != NB.confVersion)) - { - if (! confirm('Preferences are stored in an unsupported format. Reset them?')) - return false; - - conf = null; - } +// if (conf && (conf.format != NB.confVersion)) +// { +// if (! confirm('Preferences are stored in an unsupported format. Reset them?')) +// return false; +// +// conf = null; +// } if (conf) {