From b3ba6d24914adef1b5fc71b046bd782a9f20cbe9 Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Fri, 30 Dec 2022 14:33:17 -0600 Subject: [PATCH] clean up slot/device saving --- main.js | 4 ++-- preload.js | 4 ++-- src/device.js | 5 ++--- src/saveSlots.js | 56 +++++++++++++++++++++++++++++++++++------------- 4 files changed, 47 insertions(+), 22 deletions(-) diff --git a/main.js b/main.js index aa6b406..a8f7f6d 100644 --- a/main.js +++ b/main.js @@ -24,9 +24,9 @@ const menuTemplate = [ submenu: [ { label: 'Clear Saved Data', - id: 'resetViews', + id: 'clearSavedData', click(menuItem, window, event) { - mainWindow.webContents.send('resetViews'); + mainWindow.webContents.send('clearSavedData'); }, }, { diff --git a/preload.js b/preload.js index e3bd5a2..bf58250 100644 --- a/preload.js +++ b/preload.js @@ -173,8 +173,8 @@ ipcRenderer.on('deleteActive', (event, message) => { VIEW.selectPreviousDevice(); }); -ipcRenderer.on('resetViews', (event, message) => { - SAVESLOTS.resetSlots(); +ipcRenderer.on('clearSavedData', (event, message) => { + SAVESLOTS.clearSavedData(); }); ipcRenderer.on('loadSlot', (event, slot) => { diff --git a/src/device.js b/src/device.js index db4e67c..b57e4cb 100644 --- a/src/device.js +++ b/src/device.js @@ -173,7 +173,7 @@ function initDeviceConnection(id) { } else if (plugins[type].config.connectionType === 'UDPsocket') { device.connection = udp.createSocket('udp4'); - device.connection.bind({ port: plugins[type].defaultPort }, () => { + device.connection.bind({ port: plugins[type].config.defaultPort }, () => { plugins[type].ready(device); device.connection.on('message', (msg, info) => { @@ -223,8 +223,7 @@ module.exports.deleteActive = function deleteActive() { if (choice) { VIEW.removeDeviceFromList(device); delete devices[device.id]; - SAVESLOTS.deleteFromSlots(device); - SAVESLOTS.saveAll(); + SAVESLOTS.removeDevice(device); SAVESLOTS.reloadActiveSlot(); } }; diff --git a/src/saveSlots.js b/src/saveSlots.js index 2dc4aad..bd9a8d0 100644 --- a/src/saveSlots.js +++ b/src/saveSlots.js @@ -8,6 +8,13 @@ let savedDevices = []; const storedSlots = localStorage.getItem('savedSlots'); if (storedSlots) { savedSlots = JSON.parse(storedSlots); + // can probably be removed but I've noticed some older versions left some [null] slots in the savedSlots + savedSlots = savedSlots.map((savedSlot) => { + if (savedSlot.length === 1 && savedSlot[0] === null) { + return []; + } + return savedSlot; + }); } const storedDevices = localStorage.getItem('savedDevices'); @@ -68,12 +75,26 @@ module.exports.saveAll = function saveAll() { savedSlots[activeSlot] = []; for (let i = 0; i < currentPins.length; i++) { - savedSlots[activeSlot][i] = { - addresses: currentPins[i].addresses, - type: currentPins[i].type, - id: currentPins[i].id, - }; + if (currentPins[i]) { + // only include saved devices + if (currentPins[i].id in DEVICE.all) { + savedSlots[activeSlot][i] = { + addresses: currentPins[i].addresses, + type: currentPins[i].type, + id: currentPins[i].id, + }; + } + } } + + // can probably be removed but I've noticed some older versions left some [null] slots in the savedSlots + savedSlots = savedSlots.map((savedSlot) => { + if (savedSlot.length === 1 && savedSlot[0] === null) { + return []; + } + return savedSlot; + }); + localStorage.setItem('savedSlots', JSON.stringify(savedSlots)); console.log( `Saved ${currentPins.length} pinned devices to slot ${activeSlot}!` @@ -94,24 +115,29 @@ module.exports.saveAll = function saveAll() { }; i++; }); + localStorage.setItem('savedDevices', JSON.stringify(savedDevices)); + console.log(`Saved ${savedDevices.length} devices to storage!`); }; -module.exports.deleteFromSlots = function deleteFromSlots(device) { - for (let i = 1; i <= 3; i++) { - console.log(savedSlots); - for (let j = 0; j < savedSlots[i].length; j++) { - if (savedSlots[i][j].id === device.id) { - delete savedSlots[i][j]; - } - } +module.exports.removeDevice = function removeDevice(_device) { + // remove devices from local savedDevices + savedDevices = savedDevices.filter((device) => device.id !== _device.id); + + // remove devices from all saved slots + for (let i = 1; i < savedSlots.length; i++) { + savedSlots[i] = savedSlots[i].filter((device) => device.id !== _device.id); } + + // things might have changed so run a save + this.saveAll(); }; module.exports.reloadActiveSlot = function reloadActiveSlot() { loadSlot(activeSlot); }; -module.exports.resetSlots = function resetSlots() { - localStorage.clear(); +module.exports.clearSavedData = function clearSavedData() { + localStorage.removeItem('savedSlots'); + localStorage.removeItem('savedDevices'); };