Skip to content

Commit 898a5be

Browse files
authored
Merge pull request #602 from Gaurav0/upgrade_ember_data_2_18
Upgrade ember data to 2.18
2 parents 861de0a + 8812777 commit 898a5be

9 files changed

Lines changed: 223 additions & 86 deletions

File tree

app/components/file-tree.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ export default Ember.Component.extend({
1010
const files = this.get('model.files') || [];
1111

1212
return files.reduce((accumulator, file) => {
13+
if (!file) {
14+
return accumulator;
15+
}
16+
1317
const path = file.get('filePath');
1418
const splitPath = path.split('/');
1519
const splitPathZeroBasedLength = splitPath.length - 1;

app/mixins/files.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import Ember from "ember";
22
import ErrorMessages from "../utils/error-messages";
3+
import { pushDeletion } from "../utils/push-deletion";
4+
5+
const { run } = Ember;
36

47
export default Ember.Mixin.create({
58
hasPath(filePath) {
@@ -16,7 +19,10 @@ export default Ember.Mixin.create({
1619
}
1720

1821
fileProperties.filePath = filePath;
19-
let file = this.get('store').createRecord('gistFile', fileProperties);
22+
23+
let store = this.get('store');
24+
run(() => pushDeletion(store, 'gist-file', filePath));
25+
let file = store.createRecord('gistFile', fileProperties);
2026

2127
this.get('model.files').pushObject(file);
2228
this.get('notify').info(`File ${file.get('filePath')} was added`);

app/routes/gist/edit.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import Ember from "ember";
22
import GistRoute from "ember-twiddle/routes/gist-base-route";
3+
import { pushDeleteAll } from "ember-twiddle/utils/push-deletion";
34

4-
const { get } = Ember;
5+
const { get, run } = Ember;
56

67
export default GistRoute.extend({
78
model(params) {
8-
this.get('store').unloadAll('gistFile');
9+
run(() => pushDeleteAll(this.get('store'), 'gist-file'));
910

1011
return this.get('store').find('gist', params.gistId);
1112
},

app/routes/gist/edit/revision.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1+
import Ember from 'ember';
12
import GistEditRoute from "../edit";
3+
import { pushDeleteAll } from "ember-twiddle/utils/push-deletion";
4+
5+
const { run } = Ember;
26

37
export default GistEditRoute.extend({
48

59
templateName: 'gist',
610

711
model(params) {
8-
this.get('store').unloadAll('gistFile');
12+
let store = this.get('store');
13+
run(() => pushDeleteAll(store, 'gist-file'));
914
const gistParams = this.paramsFor('gist.edit');
1015

11-
return this.get('store').queryRecord('gist-revision', {
16+
return store.queryRecord('gist-revision', {
1217
gistId: gistParams.gistId,
1318
revId: params.revId
1419
});
@@ -23,8 +28,9 @@ export default GistEditRoute.extend({
2328

2429
actions: {
2530
showCurrentVersion() {
26-
this.get('store').unloadAll('gistFile');
27-
this.store.find('gist', this.paramsFor('gist.edit').gistId).then((model) => {
31+
const store = this.get('store');
32+
run(() => pushDeleteAll(store, 'gist-file'));
33+
store.find('gist', this.paramsFor('gist.edit').gistId).then((model) => {
2834
this.transitionTo('gist.edit', model);
2935
});
3036
}

app/routes/gist/new.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Ember from 'ember';
22
import GistRoute from "ember-twiddle/routes/gist-base-route";
3+
import { pushDeleteAll } from "ember-twiddle/utils/push-deletion";
34

45
const { inject, run } = Ember;
56

@@ -13,7 +14,7 @@ export default GistRoute.extend({
1314
if (params.copyCurrentTwiddle) {
1415
store.peekAll('gistFile').setEach('gist', model);
1516
} else {
16-
store.unloadAll('gistFile');
17+
run(() => pushDeleteAll(store, 'gist-file'));
1718
let files = model.get('files');
1819
let emberCli = this.get('emberCli');
1920
files.pushObject(emberCli.generate('controllers/application'));

app/services/ember-cli.js

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ import blueprints from '../lib/blueprints';
55
import Ember from 'ember';
66
import moment from 'moment';
77
import _template from "lodash/template";
8+
import { pushDeletion } from 'ember-twiddle/utils/push-deletion';
89

9-
const { computed, inject, RSVP, $, testing } = Ember;
10+
const { computed, inject, RSVP, run, $, testing } = Ember;
1011
const twiddleAppName = 'twiddle';
1112
const oldTwiddleAppNames = ['demo-app', 'app'];
1213
const hbsPlugin = new HbsPlugin(Babel);
@@ -162,7 +163,9 @@ export default Ember.Service.extend({
162163
},
163164

164165
generate(type) {
165-
return this.get('store').createRecord('gistFile', this.buildProperties(type));
166+
let store = this.get('store');
167+
run(() => pushDeletion(store, 'gist-file', type));
168+
return store.createRecord('gistFile', this.buildProperties(type));
166169
},
167170

168171
buildProperties(type, replacements) {
@@ -331,27 +334,27 @@ export default Ember.Service.extend({
331334
url: 'https://cdnjs.cloudflare.com/ajax/libs/qunit/2.3.2/qunit.js',
332335
dataType: 'text'
333336
}).then(function(script) {
334-
var oldQUnit;
335-
if (window.QUnit) {
336-
oldQUnit = window.QUnit;
337-
}
338-
window.QUnit = {
339-
config: {
340-
autostart: false
341-
}
342-
}
343-
eval(script);
344-
if (!oldQUnit) {
345-
oldQUnit = window.QUnit;
346-
}
347-
if (window.testModule) {
348-
window.require(window.testModule);
349-
}
350-
window.QUnit.start = function() {};
351-
window.QUnit.done(function() {
352-
window.QUnit = oldQUnit;
353-
});
354337
Ember.run(function() {
338+
var oldQUnit;
339+
if (window.QUnit) {
340+
oldQUnit = window.QUnit;
341+
}
342+
window.QUnit = {
343+
config: {
344+
autostart: false
345+
}
346+
}
347+
eval(script);
348+
if (!oldQUnit) {
349+
oldQUnit = window.QUnit;
350+
}
351+
if (window.testModule) {
352+
window.require(window.testModule);
353+
}
354+
window.QUnit.start = function() {};
355+
window.QUnit.done(function() {
356+
window.QUnit = oldQUnit;
357+
});
355358
oldQUnit.start();
356359
});
357360
});
@@ -400,9 +403,11 @@ export default Ember.Service.extend({
400403

401404
checkRequiredFiles(out, gist) {
402405
requiredFiles.forEach(filePath => {
403-
var file = gist.get('files').findBy('filePath', filePath);
404-
if(!file) {
405-
gist.get('files').pushObject(this.get('store').createRecord('gistFile', {
406+
let file = gist.get('files').findBy('filePath', filePath);
407+
if (!file) {
408+
let store = this.get('store');
409+
run(() => pushDeletion(store, 'gist-file', filePath));
410+
gist.get('files').pushObject(store.createRecord('gistFile', {
406411
filePath: filePath,
407412
content: blueprints[filePath]
408413
}));

app/utils/push-deletion.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Taken from https://github.com/travis-ci/travis-web/pull/1173/files
2+
export function removeInternalModels(store, type, id) {
3+
let recordMap = store._internalModelsFor(type);
4+
let internalModel = recordMap.get(id);
5+
if (internalModel) {
6+
recordMap.remove(internalModel, id);
7+
}
8+
}
9+
10+
// Taken from https://gist.github.com/runspired/96618af26fb1c687a74eb30bf15e58b6/
11+
export function pushDeletion(store, type, id) {
12+
let record = store.peekRecord(type, id);
13+
14+
if (record !== null) {
15+
let relationships = {};
16+
let hasRelationships = false;
17+
18+
record.eachRelationship((name, { kind }) => {
19+
hasRelationships = true;
20+
relationships[name] = {
21+
data: kind === 'hasMany' ? [] : null
22+
};
23+
});
24+
25+
if (hasRelationships && !record.get('isDeleted')) {
26+
store.push({
27+
data: {
28+
type,
29+
id,
30+
relationships
31+
}
32+
});
33+
}
34+
35+
record.unloadRecord();
36+
37+
removeInternalModels(store, type, id);
38+
}
39+
}
40+
41+
export function pushDeleteAll(store, type) {
42+
let records = store.peekAll(type);
43+
records.forEach(record => pushDeletion(store, type, record.get('id')));
44+
}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@
5959
"ember-cli-test-loader": "^1.1.1",
6060
"ember-cli-uglify": "^2.1.0",
6161
"ember-concurrency": "~0.8.17",
62-
"ember-data": "~2.12.2",
62+
"ember-data": "^2.18.0",
6363
"ember-disable-proxy-controllers": "^1.0.1",
6464
"ember-export-application-global": "^2.0.0",
6565
"ember-git-version": "~0.1.2",
66-
"ember-inflector": "^1.12.1",
66+
"ember-inflector": "~2.0.0",
6767
"ember-load": "~0.0.12",
6868
"ember-load-initializers": "^1.0.0",
6969
"ember-lodash": "^4.18.0",

0 commit comments

Comments
 (0)