import Ember from 'ember';
import uploader from 'ghost/assets/lib/uploader';

var Preview = Ember.Component.extend({
    config: Ember.inject.service(),

    didInsertElement: function () {
        this.set('scrollWrapper', this.$().closest('.entry-preview-content'));
        Ember.run.scheduleOnce('afterRender', this, this.dropzoneHandler);
    },

    adjustScrollPosition: Ember.observer('scrollPosition', function () {
        var scrollWrapper = this.get('scrollWrapper'),
            scrollPosition = this.get('scrollPosition');

        if (scrollWrapper) {
            scrollWrapper.scrollTop(scrollPosition);
        }
    }),

    dropzoneHandler: function () {
        var dropzones = $('.js-drop-zone');

        uploader.call(dropzones, {
            editor: true,
            fileStorage: this.get('config.fileStorage')
        });

        dropzones.on('uploadstart', Ember.run.bind(this, 'sendAction', 'uploadStarted'));
        dropzones.on('uploadfailure', Ember.run.bind(this, 'sendAction', 'uploadFinished'));
        dropzones.on('uploadsuccess', Ember.run.bind(this, 'sendAction', 'uploadFinished'));
        dropzones.on('uploadsuccess', Ember.run.bind(this, 'sendAction', 'uploadSuccess'));

        // Set the current height so we can listen
        this.sendAction('updateHeight', this.$().height());
    },

    // fire off 'enable' API function from uploadManager
    // might need to make sure markdown has been processed first
    reInitDropzones: Ember.observer('markdown', function () {
        Ember.run.scheduleOnce('afterRender', this, this.dropzoneHandler);
    })
});

export default Preview;