From ba3dbf34e25752417ded77bfc67a05d31d6ee564 Mon Sep 17 00:00:00 2001
From: Mathis Neumann <mathis@simpletechs.net>
Date: Sat, 9 Jul 2016 15:10:22 +0200
Subject: [PATCH] listen to changelog stream and automatically parse and add
 them into the Ember Data store

---
 app/services/changelog-parser.js | 15 +++++++++++++++
 app/services/changelog-stream.js |  3 ++-
 2 files changed, 17 insertions(+), 1 deletion(-)
 create mode 100644 app/services/changelog-parser.js

diff --git a/app/services/changelog-parser.js b/app/services/changelog-parser.js
new file mode 100644
index 0000000..5d40da4
--- /dev/null
+++ b/app/services/changelog-parser.js
@@ -0,0 +1,15 @@
+import Ember from 'ember';
+
+export default Ember.Service.extend({
+    store: Ember.inject.service(),
+    parse(changelog) {
+        this.debug('store', this.get('store'));
+        this.debug('parsing changelog', changelog);
+        const data = changelog.data;
+        const store = this.get('store');
+        const normalized = store.normalize('node', data); // using application serializer
+
+        this.debug('normalized', normalized);
+        store.push(normalized);
+    }
+});
\ No newline at end of file
diff --git a/app/services/changelog-stream.js b/app/services/changelog-stream.js
index 0d97072..fb10d45 100644
--- a/app/services/changelog-stream.js
+++ b/app/services/changelog-stream.js
@@ -2,6 +2,7 @@ import Ember from 'ember';
 
 export default Ember.Service.extend({
     shouldClose: false,
+    changelogParser: Ember.inject.service(),
     init() {
         this._super(...arguments);
         this.debug('session', this.get('systemId'));
@@ -51,7 +52,7 @@ export default Ember.Service.extend({
             this.debug('new changelog received', changelogJson);
             try {
                 const changelog = JSON.parse(changelogJson);
-                this.debug('changelog converted', changelog);
+                this.get('changelogParser').parse(changelog);
             } catch (e) {
                 console.error('could not parse changelog json', e, changelogJson);
             }
-- 
GitLab