Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit cc1a22b

Browse files
committed
fix #273 - call uploadCompleted() after uploaded image replaces preview
1 parent 72dfb52 commit cc1a22b

File tree

2 files changed

+42
-24
lines changed

2 files changed

+42
-24
lines changed

spec/images.spec.js

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ describe('Images addon', function () {
160160
});
161161
});
162162

163-
it('truggers input event twice on showImage for preview', function (done) {
163+
it('triggers input event twice on showImage for preview', function (done) {
164164
var inputTriggerCount = 0,
165165
stubbedImage = jasmine.createSpy('image'),
166166
context = this.$el.prepend('<div class="medium-insert-images medium-insert-active">' +
@@ -184,6 +184,38 @@ describe('Images addon', function () {
184184
stubbedImage.onload();
185185
});
186186

187+
it('calls uploadCompleted when preview is enabled', function (done) {
188+
var stubbedImage = jasmine.createSpy('image'),
189+
context = this.$el.prepend('<div class="medium-insert-images medium-insert-active">' +
190+
'<figure><img src="data:" alt=""></figure>' +
191+
'</div>');
192+
193+
spyOn(this.addon, 'getDOMImage').and.returnValue(stubbedImage);
194+
195+
this.addon.options.uploadCompleted = function () {
196+
expect(true).toBe(true);
197+
done();
198+
};
199+
200+
this.addon.showImage('http://image.co', {
201+
context: context
202+
});
203+
stubbedImage.onload();
204+
});
205+
206+
it('calls uploadCompleted when preview is disabled', function (done) {
207+
this.addon.options.preview = false;
208+
209+
this.addon.options.uploadCompleted = function () {
210+
expect(true).toBe(true);
211+
done();
212+
};
213+
214+
this.addon.showImage(null, {
215+
submit: function () {}
216+
});
217+
});
218+
187219
it('supports selecting image', function () {
188220
this.$el.find('p')
189221
.addClass('medium-insert-images')
@@ -370,23 +402,6 @@ describe('Images addon', function () {
370402
$('.medium-insert-images-toolbar2 .medium-editor-action').first().click();
371403
});
372404

373-
it('calls uploadCompleted callback', function (done) {
374-
this.addon.options.uploadCompleted = function () {
375-
expect(true).toBe(true);
376-
done();
377-
};
378-
379-
spyOn(this.addon, 'showImage');
380-
381-
this.addon.uploadDone(null, {
382-
result: {
383-
files: [
384-
{ url: 'test.jpg' }
385-
]
386-
}
387-
});
388-
});
389-
390405
it('validatates file type on upload', function (done) {
391406
spyOn(window, 'alert').and.callFake(function (text) {
392407
expect(text).toMatch(/^This file is not in a supported format/);

src/js/images.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -342,14 +342,10 @@
342342
*/
343343

344344
Images.prototype.uploadDone = function (e, data) {
345-
var $el = $.proxy(this, 'showImage', data.result.files[0].url, data)();
345+
$.proxy(this, 'showImage', data.result.files[0].url, data)();
346346

347347
this.core.clean();
348348
this.sorting();
349-
350-
if (this.options.uploadCompleted) {
351-
this.options.uploadCompleted($el, data);
352-
}
353349
};
354350

355351
/**
@@ -374,8 +370,13 @@
374370
domImage = this.getDOMImage();
375371
domImage.onload = function () {
376372
data.context.find('img').attr('src', domImage.src);
373+
374+
if (this.options.uploadCompleted) {
375+
this.options.uploadCompleted(data.context, data);
376+
}
377+
377378
that.core.triggerInput();
378-
};
379+
}.bind(this);
379380
domImage.src = img;
380381
} else {
381382
data.context = $(this.templates['src/js/templates/images-image.hbs']({
@@ -405,6 +406,8 @@
405406

406407
if (this.options.preview) {
407408
data.submit();
409+
} else if (this.options.uploadCompleted) {
410+
this.options.uploadCompleted(data.context, data);
408411
}
409412
}
410413

0 commit comments

Comments
 (0)