/**
  Handles a gap between posts with a click to load more

  @class PostGapComponent
  @extends Ember.Component
  @namespace Discourse
  @module Discourse
**/
Discourse.PostGapComponent = Ember.Component.extend({
  classNameBindings: [':gap', 'gap::hidden'],

  init: function() {
    this._super();
    this.set('loading', false);

    var before = this.get('before') === 'true',
        gaps = before ? this.get('postStream.gaps.before') : this.get('postStream.gaps.after');

    if (gaps) {
      this.set('gap', gaps[this.get('post.id')]);
    }
  },

  render: function(buffer) {
    if (this.get('loading')) {
      buffer.push(I18n.t('loading'));
    } else {
      var gapLength = this.get('gap.length');
      if (gapLength) {
        buffer.push(I18n.t('post.gap', {count: gapLength}));
      }
    }
  },

  click: function() {
    if (this.get('loading') || (!this.get('gap'))) { return false; }
    this.set('loading', true);
    this.rerender();

    var self = this,
        postStream = this.get('postStream'),
        filler = this.get('before') === 'true' ? postStream.fillGapBefore : postStream.fillGapAfter;

    filler.call(postStream, this.get('post'), this.get('gap')).then(function() {
      // hide this control after the promise is resolved
      self.set('gap', null);
    });

    return false;
  }
});
