Skip to content

Commit d6cd996

Browse files
committed
Use client-side sequence to avoid jank.
This happens during multi-file uploads.
1 parent 5dbed2e commit d6cd996

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

client/app/controllers/image-item.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ export default Ember.ObjectController.extend(Ember.FSM.Stateful, {
1010
hasUpload: Ember.computed.bool('upload'),
1111
hasFile: Ember.computed.bool('file'),
1212

13+
sequence: function(key, value) {
14+
if (arguments.length === 1) {
15+
var createdAt = this.get('createdAt');
16+
return createdAt && createdAt.valueOf();
17+
} else {
18+
return value;
19+
}
20+
}.property(),
21+
1322
wholeProgress: function() {
1423
var progress = this.get('progress');
1524

client/app/controllers/images.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
export default Ember.ArrayController.extend({
22
itemController: 'imageItem',
33

4-
newest: Ember.computed.sort('@this.@each.createdAt', function(a, b) {
5-
var dateA = a.get('createdAt').valueOf();
6-
var dateB = b.get('createdAt').valueOf();
4+
newest: Ember.computed.sort('@this.@each.sequence', function(a, b) {
5+
var aSeq = a.get('sequence');
6+
var bSeq = b.get('sequence');
77

8-
if (dateA > dateB) {
8+
if (aSeq > bSeq) {
99
return -1;
10-
} else if (dateA < dateB) {
10+
} else if (aSeq < bSeq) {
1111
return 1;
1212
} else {
1313
return 0;
@@ -17,14 +17,15 @@ export default Ember.ArrayController.extend({
1717
actions: {
1818
addFiles: function(files) {
1919
files.forEach(function(file, i) {
20-
var now = new Date();
21-
var image = this.store.createRecord('image', { createdAt: now });
20+
var image = this.store.createRecord('image');
21+
var seq = new Date().valueOf() + i;
2222
var item;
2323

2424
this.pushObject(image);
2525

2626
item = this.get('lastObject');
2727
item.set('file', file);
28+
item.set('sequence', seq);
2829
item.send('startUpload');
2930
}, this);
3031
},

server/app/controllers/api/v1/images_controller.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ def create
2121

2222
def image_params
2323
params.require(:image).permit(
24-
:upload_key,
25-
:created_at,
26-
:id
24+
:upload_key
2725
)
2826
end
2927
end

0 commit comments

Comments
 (0)