From cf68bad47ac3de03d520220ebd3d9a89909db1af Mon Sep 17 00:00:00 2001 From: pbywater Date: Thu, 20 Jul 2017 15:41:37 +0100 Subject: [PATCH] adding logic for deleting memories in database when user comes back online relates to #138 --- src/client/d3/d3.js | 13 +++--------- src/client/helpers/helpers.js | 38 +++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/src/client/d3/d3.js b/src/client/d3/d3.js index ecaf652..efe3bb1 100644 --- a/src/client/d3/d3.js +++ b/src/client/d3/d3.js @@ -1,4 +1,4 @@ -const { initTagMenu, showDeleteButton, hoveringOnDelete, hideDeleteButton, initSubmitMemory, tagSorting, constructTagList, showHeading } = require('../helpers/helpers.js'); +const { initTagMenu, showDeleteButton, hoveringOnDelete, hideDeleteButton, initSubmitMemory, tagSorting, constructTagList, showHeading, saveMemoryIdToStorage, removeMemoryFromStoredData } = require('../helpers/helpers.js'); const { width, height, jsonUrl, svg, fdGrp, nodeGrp, linkGrp } = require('./setup.js'); const { sortWithMax, binByTag, centralMaxNodesByTag, memoryNodesAndLinks } = require('../node_transformations'); const { appendPopUp, randomPopUp } = require('./modals.js'); @@ -221,15 +221,8 @@ function render(updatedData) { render(formatData(data)); sim.restart(); } else { - const saveDeletedMemory = JSON.stringify({ toDelete: id }); - localStorage.toDelete = saveDeletedMemory; - const offlineData = JSON.parse(localStorage.getItem('data')); - offlineData.forEach((memory, index) => { - if (memory.id == id) { - offlineData.splice(index, 1); - } - return offlineData; - }); + saveMemoryIdToStorage(id); + const offlineData = removeMemoryFromStoredData(id); render(formatData(offlineData)); sim.restart(); } diff --git a/src/client/helpers/helpers.js b/src/client/helpers/helpers.js index 9b3347e..0302155 100644 --- a/src/client/helpers/helpers.js +++ b/src/client/helpers/helpers.js @@ -219,6 +219,42 @@ function constructTagList(data) { `); } +function saveMemoryIdToStorage(id) { + if (localStorage.toDelete) { + const memoriesWaitingToBeRemoved = JSON.parse(localStorage.getItem("toDelete")); + memoriesWaitingToBeRemoved.toDelete.push(id); + const saveMemoriesToDelete = JSON.stringify(memoriesWaitingToBeRemoved); + localStorage.toDelete = saveMemoriesToDelete; + } + else { + const saveDeletedMemory = JSON.stringify({toDelete: [id]}); + localStorage.toDelete = saveDeletedMemory; + } +} + +function removeMemoryFromStoredData(id) { + const offlineData = JSON.parse(localStorage.getItem('data')); + offlineData.forEach((memory, index) => { + if (memory.id == id) { + offlineData.splice(index, 1); + } + }); +return offlineData; +} + +function removeMemoriesDeletedOffline() { + const deletedMemories = JSON.parse(localStorage.getItem('toDelete')); + deletedMemories.toDelete.forEach((memory) => { + console.log('memory id is ', memory.id); + $.ajax({ + method: 'DELETE', + url: 'memories', + data: { memory.id }, + success: () => update(url), + }); + }) +} + module.exports = { getRandomInt, initTagMenu, @@ -228,4 +264,6 @@ module.exports = { hideDeleteButton, showHeading, constructTagList, + saveMemoryIdToStorage, + removeMemoryFromStoredData, };