Skip to content

Commit a94b7e5

Browse files
committed
Bring ember-data-fastboot into the app
1 parent 853b0ff commit a94b7e5

4 files changed

Lines changed: 67 additions & 17 deletions

File tree

app/instance-initializers/clear-double-boot.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ export default {
3636
name: 'clear-double-boot',
3737

3838
initialize(instance) {
39-
if (typeof FastBoot === 'undefined') {
39+
const prerender = instance.lookup('service:prerender');
40+
if (!prerender.isPrerendering) {
4041
var originalDidCreateRootView = instance.didCreateRootView;
4142

4243
instance.didCreateRootView = function () {
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import Ember from 'ember';
2+
3+
export function initialize(applicationInstance) {
4+
let store = applicationInstance.lookup('service:store');
5+
let shoebox = applicationInstance.lookup('service:fastboot').get('shoebox');
6+
const isPrerendering =
7+
applicationInstance.lookup('service:prerender').isPrerendering;
8+
9+
if (!isPrerendering) {
10+
if (!shoebox) {
11+
return;
12+
}
13+
let dump = shoebox.retrieve('ember-data-store');
14+
if (!dump) {
15+
return;
16+
}
17+
store.pushPayload(dump.records);
18+
return;
19+
}
20+
21+
shoebox.put('ember-data-store', {
22+
get records() {
23+
const modelNames = Object.keys(store._modelFactoryCache);
24+
return modelNames
25+
.map((name) => {
26+
return store.peekAll(name).toArray();
27+
})
28+
.reduce((a, b) => a.concat(b), [])
29+
.filter((record) => record.get('isLoaded') && !record.get('isNew'))
30+
.map((record) => {
31+
const serializedRecord = record.serialize({ includeId: true });
32+
33+
record.eachRelationship((name, meta) => {
34+
const link = record[meta.kind](name).link();
35+
36+
if (link) {
37+
const dashName = Ember.String.dasherize(name);
38+
39+
serializedRecord.data.relationships =
40+
serializedRecord.data.relationships || {};
41+
serializedRecord.data.relationships[dashName] =
42+
serializedRecord.data.relationships[dashName] || {};
43+
serializedRecord.data.relationships[dashName].links = {
44+
related: link,
45+
};
46+
}
47+
});
48+
49+
return serializedRecord;
50+
})
51+
.reduce(
52+
(a, b) => {
53+
a.data.push(b.data);
54+
return a;
55+
},
56+
{ data: [] },
57+
);
58+
},
59+
});
60+
}
61+
62+
export default {
63+
name: 'ember-data-fastboot',
64+
initialize,
65+
};

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@
7474
"ember-composable-helpers": "^5.0.0",
7575
"ember-concurrency": "^4.0.6",
7676
"ember-data": "~4.12.8",
77-
"ember-data-fastboot": "https://github.com/kategengler/ember-data-fastboot#v0.0.1",
7877
"ember-decorators": "^6.1.1",
7978
"ember-eslint-parser": "^0.5.11",
8079
"ember-inflector": "^6.0.0",

pnpm-lock.yaml

Lines changed: 0 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)