local-store.js 1018 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import Ember from 'ember';
  2. export default Ember.Service.extend({
  3. _storage: window.localStorage,
  4. _prefix: '_misago_',
  5. _watchers: null,
  6. _initWatches: function() {
  7. this.set('_watchers', []);
  8. var self = this;
  9. window.addEventListener('storage', function(e) {
  10. Ember.$.each(self.get('_watchers'), function(i, watcher) {
  11. if (watcher.keyName === e.key) {
  12. watcher.callback(e.newValue);
  13. }
  14. });
  15. });
  16. }.on('init'),
  17. prefixKey: function(keyName) {
  18. return this.get('_prefix') + keyName;
  19. },
  20. setItem: function(keyName, value) {
  21. this.get('_storage').setItem(this.prefixKey(keyName), JSON.stringify(value));
  22. },
  23. getItem: function(keyName) {
  24. var itemJson = this.get('_storage').getItem(this.prefixKey(keyName));
  25. if (itemJson) {
  26. return JSON.parse(itemJson);
  27. } else {
  28. return null;
  29. }
  30. },
  31. watchItem: function(keyName, callback) {
  32. this.get('_watchers').push({keyName: this.prefixKey(keyName), callback: callback});
  33. }
  34. });