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 TryGhost#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.