Merge pull request #138 from a8m/master

refacor PR #132 - localStorage.length issue
master
Gregory Pike 10 years ago
commit 4b25996bac

@ -83,7 +83,7 @@ angularLocalStorage.provider('localStorageService', function() {
} }
var deriveQualifiedKey = function(key) { var deriveQualifiedKey = function(key) {
return prefix + key; return prefix + key;
} };
// Checks the browser to see if local storage is supported // Checks the browser to see if local storage is supported
var browserSupportsLocalStorage = (function () { var browserSupportsLocalStorage = (function () {
try { try {
@ -386,14 +386,17 @@ angularLocalStorage.provider('localStorageService', function() {
}); });
}; };
var lengthToLocalStorage = function() { // Return localStorageService.length
var cant = 0; // ignore keys that not owned
for(var iIndex=0; iIndex<localStorage.length; iIndex++){ var lengthOfLocalStorage = function() {
if( localStorage.key(iIndex).contains(prefix) && localStorage.key(iIndex).indexOf(prefix) === 0 ){ var count = 0;
cant++; var storage = $window[storageType];
for(var i = 0; i < storage.length; i++) {
if(storage.key(i).indexOf(prefix) === 0 ) {
count++;
} }
} }
return cant; return count;
}; };
return { return {
@ -407,7 +410,7 @@ angularLocalStorage.provider('localStorageService', function() {
clearAll: clearAllFromLocalStorage, clearAll: clearAllFromLocalStorage,
bind: bindToScope, bind: bindToScope,
deriveKey: deriveQualifiedKey, deriveKey: deriveQualifiedKey,
length: lengthToLocalStorage, length: lengthOfLocalStorage,
cookie: { cookie: {
set: addToCookies, set: addToCookies,
add: addToCookies, //DEPRECATED add: addToCookies, //DEPRECATED

@ -16,6 +16,13 @@ describe('localStorageService', function() {
}, },
removeItem: function(key) { removeItem: function(key) {
delete keys[key]; delete keys[key];
},
get length() {
return Object.keys(keys).length;
},
key: function(i) {
var aKeys = Object.keys(keys);
return aKeys[i] || null;
} }
}; };
} }
@ -264,6 +271,17 @@ describe('localStorageService', function() {
expect($rootScope.property).toEqual(localStorageService.get('lsProperty')); expect($rootScope.property).toEqual(localStorageService.get('lsProperty'));
})); }));
it('should be able to return it\'s owned keys amount', inject(
function(localStorageService, $window) {
for(var i = 0; i < 10; i++) {
localStorageService.set('key' + i, 'val' + i);
$window.localStorage.setItem('key' + i, 'val' + i);
}
expect(localStorageService.length()).toEqual(10);
expect($window.localStorage.length).toEqual(20);
}));
//sessionStorage //sessionStorage
describe('SessionStorage', function() { describe('SessionStorage', function() {