From dad8ca568315d7d61602e43103666ecf45e4c6cf Mon Sep 17 00:00:00 2001 From: Javier Abadia Date: Tue, 14 Jan 2014 16:44:55 +0100 Subject: [PATCH] added error handling to file saving (don't know how to cause errors, so haven't been able to test properly) --- lib/tiles/offlineEnabler.js | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/tiles/offlineEnabler.js b/lib/tiles/offlineEnabler.js index b011ef6..8a75a56 100644 --- a/lib/tiles/offlineEnabler.js +++ b/lib/tiles/offlineEnabler.js @@ -188,9 +188,25 @@ define([ if(evt=="end") { var blob = new Blob([ csv.join("\r\n") ], {type:"text/plain;charset=utf-8"}); - FileSaver.saveAs(blob, fileName); - // fails in Safari (and iPad Safari?) - callback(true, "Saved " + (csv.length-1) + " tiles (" + Math.floor(blob.size / 1024 / 1024 * 100) / 100 + " Mb) into " + fileName); + var saver = FileSaver.saveAs(blob, fileName); + + if( saver.readyState == saver.DONE ) + { + if( saver.error ) + return callback(false,"Error saving file " + fileName); + else + return callback(true, "Saved " + (csv.length-1) + " tiles (" + Math.floor(blob.size / 1024 / 1024 * 100) / 100 + " Mb) into " + fileName); + } + else + { + saver.onerror = function(evt) { + callback(false,"Error saving file " + fileName); + } + saver.onwriteend = function(evt) + { + callback(true, "Saved " + (csv.length-1) + " tiles (" + Math.floor(blob.size / 1024 / 1024 * 100) / 100 + " Mb) into " + fileName); + } + } } else { @@ -212,6 +228,10 @@ define([ var csvContent = evt.target.result; var tiles = csvContent.split("\r\n"); var tileCount = 0; + + if(tiles[0] != "url,img") + return callback(false, "File " + file.name + " doesn't contain tiles that can be loaded"); + for(var i=1; i