Skip to content

Commit

Permalink
Fix empty image when navigating to new editor from an editor with image
Browse files Browse the repository at this point in the history
closes #5840
- calls `reset()` on the uploader when re-rendered with a blank image
- calls `reset()` and `initWithImage()` on the uploader when re-rendered with an image and the uploader is still in the "blank" state
  • Loading branch information
kevinansfield committed Oct 19, 2015
1 parent 5d7ca08 commit d49991f
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions core/client/app/components/gh-uploader.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,31 @@ export default Ember.Component.extend({
this.removeListeners();
},

// NOTE: because the uploader is sometimes in the same place in the DOM
// between transitions Glimmer will re-use the existing elements including
// those that arealready decorated by jQuery. The following works around
// situations where the image is changed without a full teardown/rebuild
didReceiveAttrs: function (attrs) {
var oldValue = attrs.oldAttrs && Ember.get(attrs.oldAttrs, 'image.value'),
newValue = attrs.newAttrs && Ember.get(attrs.newAttrs, 'image.value'),
self = this;

// always reset when we receive a blank image
// - handles navigating to populated image from blank image
if (Ember.isEmpty(newValue) && !Ember.isEmpty(oldValue)) {
self.$()[0].uploaderUi.reset();
}

// re-init if we receive a new image but the uploader is blank
// - handles back button navigating from blank image to populated image
if (!Ember.isEmpty(newValue) && this.$()) {
if (this.$('.js-upload-target').attr('src') === '') {
this.$()[0].uploaderUi.reset();
this.$()[0].uploaderUi.initWithImage();
}
}
},

actions: {
initUploader: function () {
var ref,
Expand Down

0 comments on commit d49991f

Please sign in to comment.