Skip to content

Commit afb075f

Browse files
committed
Upgrade ember-data to 2.13
1 parent 861de0a commit afb075f

9 files changed

Lines changed: 125 additions & 50 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: 10 additions & 5 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) {
@@ -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.13.2",
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",

yarn.lock

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -775,17 +775,13 @@ babel-plugin-eval@^1.0.1:
775775
version "1.0.1"
776776
resolved "https://registry.yarnpkg.com/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz#a2faed25ce6be69ade4bfec263f70169195950da"
777777

778-
babel-plugin-feature-flags@^0.2.1:
779-
version "0.2.3"
780-
resolved "https://registry.yarnpkg.com/babel-plugin-feature-flags/-/babel-plugin-feature-flags-0.2.3.tgz#81d81ed77bda2014098fa8243abcf03a551cbd4d"
781-
dependencies:
782-
json-stable-stringify "^1.0.1"
778+
babel-plugin-feature-flags@^0.3.1:
779+
version "0.3.1"
780+
resolved "https://registry.yarnpkg.com/babel-plugin-feature-flags/-/babel-plugin-feature-flags-0.3.1.tgz#9c827cf9a4eb9a19f725ccb239e85cab02036fc1"
783781

784-
babel-plugin-filter-imports@^0.2.0:
785-
version "0.2.1"
786-
resolved "https://registry.yarnpkg.com/babel-plugin-filter-imports/-/babel-plugin-filter-imports-0.2.1.tgz#784f96a892f2f7ed2ccf0955688bd8916cd2e212"
787-
dependencies:
788-
json-stable-stringify "^1.0.1"
782+
babel-plugin-filter-imports@^0.3.1:
783+
version "0.3.1"
784+
resolved "https://registry.yarnpkg.com/babel-plugin-filter-imports/-/babel-plugin-filter-imports-0.3.1.tgz#e7859b56886b175dd2616425d277b219e209ea8b"
789785

790786
babel-plugin-htmlbars-inline-precompile@^0.2.3:
791787
version "0.2.4"
@@ -1158,13 +1154,13 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
11581154
lodash "^4.17.4"
11591155
to-fast-properties "^1.0.3"
11601156

1161-
babel5-plugin-strip-class-callcheck@^5.1.0:
1162-
version "5.1.0"
1163-
resolved "https://registry.yarnpkg.com/babel5-plugin-strip-class-callcheck/-/babel5-plugin-strip-class-callcheck-5.1.0.tgz#77d4a40c8614d367b8a21a53908159806dba5f91"
1157+
babel6-plugin-strip-class-callcheck@^6.0.0:
1158+
version "6.0.0"
1159+
resolved "https://registry.yarnpkg.com/babel6-plugin-strip-class-callcheck/-/babel6-plugin-strip-class-callcheck-6.0.0.tgz#de841c1abebbd39f78de0affb2c9a52ee228fddf"
11641160

1165-
babel5-plugin-strip-heimdall@^5.0.2:
1166-
version "5.0.2"
1167-
resolved "https://registry.yarnpkg.com/babel5-plugin-strip-heimdall/-/babel5-plugin-strip-heimdall-5.0.2.tgz#e1fe191c34de79686564d50a86f4217b8df629c1"
1161+
babel6-plugin-strip-heimdall@^6.0.1:
1162+
version "6.0.1"
1163+
resolved "https://registry.yarnpkg.com/babel6-plugin-strip-heimdall/-/babel6-plugin-strip-heimdall-6.0.1.tgz#35f80eddec1f7fffdc009811dfbd46d9965072b6"
11681164

11691165
babylon@^5.8.38:
11701166
version "5.8.38"
@@ -2937,7 +2933,7 @@ ember-cli-babel@^5.0.0, ember-cli-babel@^5.1.5, ember-cli-babel@^5.1.6, ember-cl
29372933
ember-cli-version-checker "^1.0.2"
29382934
resolve "^1.1.2"
29392935

2940-
ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.1.0, ember-cli-babel@^6.10.0, ember-cli-babel@^6.11.0, ember-cli-babel@^6.12.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.7.2, ember-cli-babel@^6.8.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2:
2936+
ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.1.0, ember-cli-babel@^6.10.0, ember-cli-babel@^6.11.0, ember-cli-babel@^6.12.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.7.2, ember-cli-babel@^6.8.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2, ember-cli-babel@^6.9.0:
29412937
version "6.12.0"
29422938
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.12.0.tgz#3adcdbe1278da1fcd0b9038f1360cb4ac5d4414c"
29432939
dependencies:
@@ -3448,7 +3444,7 @@ ember-cli-valid-component-name@^1.0.0:
34483444
dependencies:
34493445
silent-error "^1.0.0"
34503446

3451-
ember-cli-version-checker@^1.0.2, ember-cli-version-checker@^1.1.4, ember-cli-version-checker@^1.1.6, ember-cli-version-checker@^1.1.7, ember-cli-version-checker@^1.2.0:
3447+
ember-cli-version-checker@^1.0.2, ember-cli-version-checker@^1.1.4, ember-cli-version-checker@^1.1.7, ember-cli-version-checker@^1.2.0:
34523448
version "1.3.1"
34533449
resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-1.3.1.tgz#0bc2d134c830142da64bf9627a0eded10b61ae72"
34543450
dependencies:
@@ -3565,26 +3561,26 @@ ember-concurrency@~0.8.17:
35653561
ember-cli-babel "^6.8.2"
35663562
ember-maybe-import-regenerator "^0.1.5"
35673563

3568-
ember-data@~2.12.2:
3569-
version "2.12.2"
3570-
resolved "https://registry.yarnpkg.com/ember-data/-/ember-data-2.12.2.tgz#45369001847b59e7d0ca8b183e9f57cb1f339260"
3564+
ember-data@~2.13.2:
3565+
version "2.13.2"
3566+
resolved "https://registry.yarnpkg.com/ember-data/-/ember-data-2.13.2.tgz#151c93ad5152885d4ca50b1942d7c66e15865c74"
35713567
dependencies:
35723568
amd-name-resolver "0.0.5"
3573-
babel-plugin-feature-flags "^0.2.1"
3574-
babel-plugin-filter-imports "^0.2.0"
3575-
babel5-plugin-strip-class-callcheck "^5.1.0"
3576-
babel5-plugin-strip-heimdall "^5.0.2"
3577-
broccoli-babel-transpiler "^5.5.0"
3569+
babel-plugin-feature-flags "^0.3.1"
3570+
babel-plugin-filter-imports "^0.3.1"
3571+
babel6-plugin-strip-class-callcheck "^6.0.0"
3572+
babel6-plugin-strip-heimdall "^6.0.1"
3573+
broccoli-babel-transpiler "^6.0.0"
35783574
broccoli-file-creator "^1.0.0"
35793575
broccoli-merge-trees "^1.0.0"
35803576
chalk "^1.1.1"
3581-
ember-cli-babel "^5.1.6"
3577+
ember-cli-babel "^6.0.0-beta.7"
35823578
ember-cli-path-utils "^1.0.0"
35833579
ember-cli-string-utils "^1.0.0"
35843580
ember-cli-test-info "^1.0.0"
35853581
ember-cli-version-checker "^1.1.4"
3586-
ember-inflector "^1.9.4"
3587-
ember-runtime-enumerable-includes-polyfill "^1.0.0"
3582+
ember-inflector "^2.0.0"
3583+
ember-runtime-enumerable-includes-polyfill "^2.0.0"
35883584
exists-sync "0.0.3"
35893585
git-repo-info "^1.1.2"
35903586
heimdalljs "^0.3.0"
@@ -3624,12 +3620,24 @@ ember-git-version@~0.1.2:
36243620
dependencies:
36253621
git-repo-info "^1.0.2"
36263622

3627-
ember-inflector@^1.12.1, ember-inflector@^1.9.2, ember-inflector@^1.9.4:
3623+
ember-inflector@^1.9.2:
36283624
version "1.12.1"
36293625
resolved "https://registry.yarnpkg.com/ember-inflector/-/ember-inflector-1.12.1.tgz#d8bd2ca2f327b439720f89923fe614d46b5da1ca"
36303626
dependencies:
36313627
ember-cli-babel "^5.1.7"
36323628

3629+
ember-inflector@^2.0.0:
3630+
version "2.2.0"
3631+
resolved "https://registry.yarnpkg.com/ember-inflector/-/ember-inflector-2.2.0.tgz#edd273dfd1a29be27f14b195e2f0ed70e812d9e0"
3632+
dependencies:
3633+
ember-cli-babel "^6.0.0"
3634+
3635+
ember-inflector@~2.0.0:
3636+
version "2.0.1"
3637+
resolved "https://registry.yarnpkg.com/ember-inflector/-/ember-inflector-2.0.1.tgz#e9ac469ffa17992a43276bb1c9b8d87992b10d37"
3638+
dependencies:
3639+
ember-cli-babel "^6.0.0"
3640+
36333641
ember-load-initializers@^1.0.0:
36343642
version "1.0.0"
36353643
resolved "https://registry.yarnpkg.com/ember-load-initializers/-/ember-load-initializers-1.0.0.tgz#4919eaf06f6dfeca7e134633d8c05a6c9921e6e7"
@@ -3735,12 +3743,12 @@ ember-router-generator@^1.0.0:
37353743
dependencies:
37363744
recast "^0.11.3"
37373745

3738-
ember-runtime-enumerable-includes-polyfill@^1.0.0:
3739-
version "1.0.4"
3740-
resolved "https://registry.yarnpkg.com/ember-runtime-enumerable-includes-polyfill/-/ember-runtime-enumerable-includes-polyfill-1.0.4.tgz#16a7612e347a2edf07da8b2f2f09dbfee70deba0"
3746+
ember-runtime-enumerable-includes-polyfill@^2.0.0:
3747+
version "2.1.0"
3748+
resolved "https://registry.yarnpkg.com/ember-runtime-enumerable-includes-polyfill/-/ember-runtime-enumerable-includes-polyfill-2.1.0.tgz#dc6d4a028471e4acc350dfd2a149874fb20913f5"
37413749
dependencies:
3742-
ember-cli-babel "^5.1.6"
3743-
ember-cli-version-checker "^1.1.6"
3750+
ember-cli-babel "^6.9.0"
3751+
ember-cli-version-checker "^2.1.0"
37443752

37453753
ember-source@~2.13.3:
37463754
version "2.13.4"

0 commit comments

Comments
 (0)