angular-translate-storage-local.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*!
  2. * angular-translate - v2.6.1 - 2015-03-01
  3. * http://github.com/angular-translate/angular-translate
  4. * Copyright (c) 2015 ; Licensed MIT
  5. */
  6. angular.module('pascalprecht.translate')
  7. /**
  8. * @ngdoc object
  9. * @name pascalprecht.translate.$translateLocalStorage
  10. * @requires $window
  11. * @requires $translateCookieStorage
  12. *
  13. * @description
  14. * Abstraction layer for localStorage. This service is used when telling angular-translate
  15. * to use localStorage as storage.
  16. *
  17. */
  18. .factory('$translateLocalStorage', ['$window', '$translateCookieStorage', function ($window, $translateCookieStorage) {
  19. // Setup adapter
  20. var localStorageAdapter = (function(){
  21. var langKey;
  22. return {
  23. /**
  24. * @ngdoc function
  25. * @name pascalprecht.translate.$translateLocalStorage#get
  26. * @methodOf pascalprecht.translate.$translateLocalStorage
  27. *
  28. * @description
  29. * Returns an item from localStorage by given name.
  30. *
  31. * @param {string} name Item name
  32. * @return {string} Value of item name
  33. */
  34. get: function (name) {
  35. if(!langKey) {
  36. langKey = $window.localStorage.getItem(name);
  37. }
  38. return langKey;
  39. },
  40. /**
  41. * @ngdoc function
  42. * @name pascalprecht.translate.$translateLocalStorage#set
  43. * @methodOf pascalprecht.translate.$translateLocalStorage
  44. *
  45. * @description
  46. * Sets an item in localStorage by given name.
  47. *
  48. * @deprecated use #put
  49. *
  50. * @param {string} name Item name
  51. * @param {string} value Item value
  52. */
  53. set: function (name, value) {
  54. langKey=value;
  55. $window.localStorage.setItem(name, value);
  56. },
  57. /**
  58. * @ngdoc function
  59. * @name pascalprecht.translate.$translateLocalStorage#put
  60. * @methodOf pascalprecht.translate.$translateLocalStorage
  61. *
  62. * @description
  63. * Sets an item in localStorage by given name.
  64. *
  65. * @param {string} name Item name
  66. * @param {string} value Item value
  67. */
  68. put: function (name, value) {
  69. langKey=value;
  70. $window.localStorage.setItem(name, value);
  71. }
  72. };
  73. }());
  74. var hasLocalStorageSupport = 'localStorage' in $window;
  75. if (hasLocalStorageSupport) {
  76. var testKey = 'pascalprecht.translate.storageTest';
  77. try {
  78. // this check have to be wrapped within a try/catch because on
  79. // a SecurityError: Dom Exception 18 on iOS
  80. if ($window.localStorage !== null) {
  81. $window.localStorage.setItem(testKey, 'foo');
  82. $window.localStorage.removeItem(testKey);
  83. hasLocalStorageSupport = true;
  84. } else {
  85. hasLocalStorageSupport = false;
  86. }
  87. } catch (e){
  88. hasLocalStorageSupport = false;
  89. }
  90. }
  91. var $translateLocalStorage = hasLocalStorageSupport ? localStorageAdapter : $translateCookieStorage;
  92. return $translateLocalStorage;
  93. }]);