diff --git a/src/components/paneConnect.vue b/src/components/paneConnect.vue index 94979c63..e50be8f5 100644 --- a/src/components/paneConnect.vue +++ b/src/components/paneConnect.vue @@ -87,21 +87,15 @@ export default { mounted() { // Propagate localMode settings this.setLocalMode(this.localMode) - // Try loading and parsing savedHosts from localStorage - if (localStorage.getItem('savedHosts')) { - try { - this.savedHosts = JSON.parse(localStorage.getItem('savedHosts')); - } catch(e) { - localStorage.removeItem('savedHosts'); - } - } + + // Try loading savedHosts from localStorage. If null, don't change. + this.savedHosts = this.getLocalStorageObj('savedHosts') || this.savedHosts }, // When savedHosts changes, serialise to JSON and save to localStorage watch: { savedHosts(newSavedHosts) { - const parsed = JSON.stringify(this.savedHosts); - localStorage.setItem('savedHosts', parsed); + this.setLocalStorageObj('savedHosts', this.savedHosts) } }, diff --git a/src/main.js b/src/main.js index 9d85dc14..81da8ece 100644 --- a/src/main.js +++ b/src/main.js @@ -67,6 +67,23 @@ Vue.mixin({ } this.$store.dispatch('errorState', errormsg); UIkit.notification({message: ` ${errormsg}`, status: 'danger'}) + }, + + getLocalStorageObj: function(keyName) { + if (localStorage.getItem(keyName)) { + try { + return JSON.parse(localStorage.getItem(keyName)) + } catch(e) { + console.log("Malformed entry. Removing from localStorage") + localStorage.removeItem(keyName) + return null + } + } + }, + + setLocalStorageObj: function(keyName, object) { + const parsed = JSON.stringify(object) + localStorage.setItem(keyName, parsed); } }