Plato on Github
Report Home
service/storage-local.js
Maintainability
69.61
Lines of code
98
Difficulty
18.91
Estimated Errors
0.26
Function weight
By Complexity
By SLOC
angular.module('pascalprecht.translate') /** * @ngdoc object * @name pascalprecht.translate.$translateLocalStorage * @requires $window * @requires $translateCookieStorage * * @description * Abstraction layer for localStorage. This service is used when telling angular-translate * to use localStorage as storage. * */ .factory('$translateLocalStorage', $translateLocalStorageFactory); function $translateLocalStorageFactory($window, $translateCookieStorage) { 'use strict'; // Setup adapter var localStorageAdapter = (function(){ var langKey; return { /** * @ngdoc function * @name pascalprecht.translate.$translateLocalStorage#get * @methodOf pascalprecht.translate.$translateLocalStorage * * @description * Returns an item from localStorage by given name. * * @param {string} name Item name * @return {string} Value of item name */ get: function (name) { if(!langKey) { langKey = $window.localStorage.getItem(name); } return langKey; }, /** * @ngdoc function * @name pascalprecht.translate.$translateLocalStorage#set * @methodOf pascalprecht.translate.$translateLocalStorage * * @description * Sets an item in localStorage by given name. * * @deprecated use #put * * @param {string} name Item name * @param {string} value Item value */ set: function (name, value) { langKey=value; $window.localStorage.setItem(name, value); }, /** * @ngdoc function * @name pascalprecht.translate.$translateLocalStorage#put * @methodOf pascalprecht.translate.$translateLocalStorage * * @description * Sets an item in localStorage by given name. * * @param {string} name Item name * @param {string} value Item value */ put: function (name, value) { langKey=value; $window.localStorage.setItem(name, value); } }; }()); var hasLocalStorageSupport = 'localStorage' in $window; if (hasLocalStorageSupport) { var testKey = 'pascalprecht.translate.storageTest'; try { // this check have to be wrapped within a try/catch because on // a SecurityError: Dom Exception 18 on iOS if ($window.localStorage !== null) { $window.localStorage.setItem(testKey, 'foo'); $window.localStorage.removeItem(testKey); hasLocalStorageSupport = true; } else { hasLocalStorageSupport = false; } } catch (e){ hasLocalStorageSupport = false; } } var $translateLocalStorage = hasLocalStorageSupport ? localStorageAdapter : $translateCookieStorage; return $translateLocalStorage; } $translateLocalStorageFactory.displayName = '$translateLocalStorageFactory';