From 5fc9bf7f8e6ff238440d8efe3b0db730e7a8585d Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Wed, 29 Jan 2014 05:57:32 +0000 Subject: [PATCH] draw tools: - broken localStorage data won't prevent plugin from loading - import: validate data better on import - json parse before erasing current items, try/catch around whole import process, and existing save method writes back to storage --- plugins/draw-tools.user.js | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/plugins/draw-tools.user.js b/plugins/draw-tools.user.js index a4bc27a4..3b909d7d 100644 --- a/plugins/draw-tools.user.js +++ b/plugins/draw-tools.user.js @@ -204,10 +204,19 @@ window.plugin.drawTools.save = function() { } window.plugin.drawTools.load = function() { - var dataStr = localStorage['plugin-draw-tools-layer']; - if (dataStr === undefined) return; + try { + var dataStr = localStorage['plugin-draw-tools-layer']; + if (dataStr === undefined) return; - var data = JSON.parse(dataStr); + var data = JSON.parse(dataStr); + window.plugin.drawTools.import(data); + + } catch(e) { + console.warn('draw-tools: failed to load data from localStorage: '+e); + } +} + +window.plugin.drawTools.import = function(data) { $.each(data, function(index,item) { var layer = null; var extraOpt = {}; @@ -233,11 +242,10 @@ window.plugin.drawTools.load = function() { if (layer) { window.plugin.drawTools.drawnItems.addLayer(layer); } - }); - } + //Draw Tools Options // Manual import, export and reset data @@ -255,7 +263,6 @@ window.plugin.drawTools.manualOpt = function() { dialog({ html: html, - width: 500, dialogClass: 'ui-dialog-drawtoolsSet', title: 'Draw Tools Options' }); @@ -294,11 +301,20 @@ window.plugin.drawTools.optCopy = function() { window.plugin.drawTools.optPaste = function() { var promptAction = prompt('Press CTRL+V to paste it.', ''); if(promptAction !== null && promptAction !== '') { - localStorage['plugin-draw-tools-layer'] = promptAction; - window.plugin.drawTools.drawnItems.clearLayers(); - window.plugin.drawTools.load(); - console.log('DRAWTOOLS: reset and imported drawn tiems'); - window.plugin.drawTools.optAlert('Import Successful.'); + try { + var data = JSON.parse(promptAction); + window.plugin.drawTools.drawnItems.clearLayers(); + window.plugin.drawTools.import(data); + console.log('DRAWTOOLS: reset and imported drawn tiems'); + window.plugin.drawTools.optAlert('Import Successful.'); + + // to write back the data to localStorage + window.plugin.drawTools.save(); + } catch(e) { + console.warn('DRAWTOOLS: failed to import data: '+e); + window.plugin.drawTools.optAlert('Import failed'); + } + } }