1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import Ember from 'ember';
- export default Ember.Service.extend({
- _storage: window.localStorage,
- _prefix: '_misago_',
- _watchers: null,
- _initWatches: function() {
- this.set('_watchers', []);
- var self = this;
- window.addEventListener('storage', function(e) {
- Ember.$.each(self.get('_watchers'), function(i, watcher) {
- if (watcher.keyName === e.key) {
- watcher.callback(e.newValue);
- }
- });
- });
- }.on('init'),
- prefixKey: function(keyName) {
- return this.get('_prefix') + keyName;
- },
- setItem: function(keyName, value) {
- this.get('_storage').setItem(this.prefixKey(keyName), JSON.stringify(value));
- },
- getItem: function(keyName) {
- var itemJson = this.get('_storage').getItem(this.prefixKey(keyName));
- if (itemJson) {
- return JSON.parse(itemJson);
- } else {
- return null;
- }
- },
- watchItem: function(keyName, callback) {
- this.get('_watchers').push({keyName: this.prefixKey(keyName), callback: callback});
- }
- });
|