export default Ember.ArrayProxy.extend({
  loading: false,
  loadingMore: false,
  totalRows: 0,
  refreshing: false,

  content: null,
  loadMoreUrl: null,
  refreshUrl: null,
  findArgs: null,
  store: null,
  __type: null,

  canLoadMore: function() {
    return this.get('length') < this.get('totalRows');
  }.property('totalRows', 'length'),

  loadMore() {
    const loadMoreUrl = this.get('loadMoreUrl');
    if (!loadMoreUrl) { return; }

    const totalRows = this.get('totalRows');
    if (this.get('length') < totalRows && !this.get('loadingMore')) {
      this.set('loadingMore', true);

      const self = this;
      return this.store.appendResults(this, this.get('__type'), loadMoreUrl).finally(function() {
        self.set('loadingMore', false);
      });
    }

    return Ember.RSVP.resolve();
  },

  refresh() {
    if (this.get('refreshing')) { return; }

    const refreshUrl = this.get('refreshUrl');
    if (!refreshUrl) { return; }

    const self = this;
    this.set('refreshing', true);
    return this.store.refreshResults(this, this.get('__type'), refreshUrl).finally(function() {
      self.set('refreshing', false);
    });

  }
});
