|
@@ -0,0 +1,41 @@
|
|
|
+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});
|
|
|
+ }
|
|
|
+});
|