diff --git a/lib/public/js/app.js b/lib/public/js/app.js index 788a071..1b8b629 100644 --- a/lib/public/js/app.js +++ b/lib/public/js/app.js @@ -244,6 +244,7 @@ ).then(function (resp) { return resp.json().then(function (data) { var zone; + var records = []; if (data.error) { console.error(data); window.alert(data.error.message); @@ -251,11 +252,15 @@ } console.log('zone undo data:'); console.log(data); - zone = cache.recordsMap[zoneId]; - delete cache.recordsMap[zoneId]; + cache.zones.some(function (z, i) { + if (z.id === zoneId) { + zone = cache.zones.splice(i, 1)[0]; + return true; + } + }); function removeRecord(r, i) { - if (r.zone === zone.name) { - cache.records.splice(i, 1); + if (r.zone === zone.name || 'SOA' === r.type && r.name === zone.name) { + records.push(cache.records.splice(i, 1)[0]); return true; } } diff --git a/lib/store.json.js b/lib/store.json.js index 9777b0e..672ebcb 100644 --- a/lib/store.json.js +++ b/lib/store.json.js @@ -315,9 +315,12 @@ module.exports.create = function (opts) { , destroy: function (zoneId, cb) { var zone; var records; + var now = Date.now(); + db.zones.filter(notDeleted).some(function (z) { if (zoneId === z.id) { zone = z; + z.deletedAt = now; return true; } }); @@ -332,6 +335,7 @@ module.exports.create = function (opts) { records = []; db.records.filter(notDeleted).forEach(function (r) { if (zone.name === r.zone) { + r.deletedAt = now; records.push(r); } });