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

@ -16,6 +16,13 @@ describe('localStorageService', function() {
},
removeItem: function(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'));
}));
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
describe('SessionStorage', function() {