@meanie/angular-storage
Version:
An Angular service for interacting with local storage, session storage and cookie storage
80 lines (67 loc) • 1.47 kB
JavaScript
/**
* Module definition and dependencies
*/
angular.module('Storage.CookieStorage.Service', [])
/**
* Cookie storage engine service
*/
.factory('$cookieStorage', function $cookieStorage($injector, $log) {
//Get cookies service
let $cookies;
if ($injector.has('$cookies')) {
$cookies = $injector.get('$cookies');
}
else {
$log.warn('Cookie storage requires the `ngCookies` module as a dependency');
}
/**
* Storage engine interface
*/
return {
/**
* Check if supported
*/
isSupported: function() {
return !!$cookies;
},
/**
* Get fallback engine
*/
getFallbackEngine: function() {
return 'memory';
},
/**
* Set an item
*/
set: function(key, value) {
$cookies.put(key, value);
},
/**
* Get an item
*/
get: function(key) {
return $cookies.get(key);
},
/**
* Remove an item
*/
remove: function(key) {
$cookies.remove(key);
},
/**
* Clear items
*/
clear: function(prefix) {
//Get all the cookies and corresponding keys
let prefixRegex = prefix ? new RegExp('^' + prefix) : null;
let cookies = $cookies.getAll();
let keys = cookies ? Object.keys(cookies) : [];
//Loop keys
for (let k = 0; k < keys.length; k++) {
if (!prefix || prefixRegex.test(keys[k])) {
$cookies.remove(keys[k]);
}
}
},
};
});