storage-local.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. angular.module('pascalprecht.translate')
  2. /**
  3. * @ngdoc object
  4. * @name pascalprecht.translate.$translateLocalStorage
  5. * @requires $window
  6. *
  7. * @description
  8. * Abstraction layer for localStorage. This service is used when telling angular-translate
  9. * to use localStorage as storage.
  10. *
  11. */
  12. .factory('$translateLocalStorage', ['$window', '$translateCookieStorage', function ($window, $translateCookieStorage) {
  13. // Setup adapter
  14. var localStorageAdapter = (function(){
  15. var langKey;
  16. return {
  17. /**
  18. * @ngdoc function
  19. * @name pascalprecht.translate.$translateLocalStorage#get
  20. * @methodOf pascalprecht.translate.$translateLocalStorage
  21. *
  22. * @description
  23. * Returns an item from localStorage by given name.
  24. *
  25. * @param {string} name Item name
  26. * @return {string} Value of item name
  27. */
  28. get: function (name) {
  29. if(!langKey) {
  30. langKey = $window.localStorage.getItem(name);
  31. }
  32. return langKey;
  33. },
  34. /**
  35. * @ngdoc function
  36. * @name pascalprecht.translate.$translateLocalStorage#set
  37. * @methodOf pascalprecht.translate.$translateLocalStorage
  38. *
  39. * @description
  40. * Sets an item in localStorage by given name.
  41. *
  42. * @param {string} name Item name
  43. * @param {string} value Item value
  44. */
  45. set: function (name, value) {
  46. langKey=value;
  47. $window.localStorage.setItem(name, value);
  48. }
  49. };
  50. }());
  51. var hasLocalStorageSupport = 'localStorage' in $window && $window.localStorage !== null;
  52. if (hasLocalStorageSupport) {
  53. var testKey = 'pascalprecht.translate.storageTest';
  54. try {
  55. $window.localStorage.setItem(testKey, 'foo');
  56. $window.localStorage.removeItem(testKey);
  57. } catch (e){
  58. hasLocalStorageSupport = false;
  59. }
  60. }
  61. var $translateLocalStorage = hasLocalStorageSupport ? localStorageAdapter : $translateCookieStorage;
  62. return $translateLocalStorage;
  63. }]);