From 1c5cabf7ac88f528b9c4da4aa8c0106cc5f4a011 Mon Sep 17 00:00:00 2001 From: George Bonner Date: Mon, 12 May 2014 16:33:47 -0700 Subject: [PATCH] Squashed commit of the following: commit 8beff969457285fb85d10ca96205a3dc7a3d729f Author: George Bonner Date: Mon May 12 16:31:42 2014 -0700 typo fix commit 8ba0a658b5e1831dfd3b8299327a2be50ecec0f2 Author: George Bonner Date: Mon May 12 16:19:35 2014 -0700 Fix commit 5d9c6c5afd4b9a56a03522e644c01d41c2a344eb Author: George Bonner Date: Mon May 12 15:58:48 2014 -0700 fix unhandled errors in chrome $window[storageType] would throw unhandled error in Chrome some cases as browserSupportsLocalStorage() had not yet been called. --- angular-local-storage.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/angular-local-storage.js b/angular-local-storage.js index f4166ba..0a8ee3f 100644 --- a/angular-local-storage.js +++ b/angular-local-storage.js @@ -70,7 +70,7 @@ angularLocalStorage.provider('localStorageService', function() { var cookie = this.cookie; var notify = this.notify; var storageType = this.storageType; - var webStorage = $window[storageType]; + var webStorage; // When Angular's $document is not available if (!$document) { @@ -96,6 +96,7 @@ angularLocalStorage.provider('localStorageService', function() { // that exceeded the quota." var key = deriveQualifiedKey('__' + Math.round(Math.random() * 1e7)); if (supported) { + webStorage = $window[storageType]; webStorage.setItem(key, ''); webStorage.removeItem(key); } @@ -107,6 +108,8 @@ angularLocalStorage.provider('localStorageService', function() { return false; } }()); + + // Directly adds a value to local storage // If local storage is not available in the browser use cookies @@ -131,7 +134,7 @@ angularLocalStorage.provider('localStorageService', function() { if (angular.isObject(value) || angular.isArray(value)) { value = angular.toJson(value); } - webStorage.setItem(deriveQualifiedKey(key), value); + if (webStorage) {webStorage.setItem(deriveQualifiedKey(key), value)}; if (notify.setItem) { $rootScope.$broadcast('LocalStorageModule.notification.setitem', {key: key, newvalue: value, storageType: this.storageType}); } @@ -151,7 +154,7 @@ angularLocalStorage.provider('localStorageService', function() { return getFromCookies(key); } - var item = webStorage.getItem(deriveQualifiedKey(key)); + var item = webStorage ? webStorage.getItem(deriveQualifiedKey(key)) : null; // angular.toJson will convert null to 'null', so a proper conversion is needed // FIXME not a perfect solution, since a valid 'null' string can't be stored if (!item || item === 'null') {