import Ember from 'ember';
import LimitedArray from 'travis/utils/limited-array';

export default Ember.Service.extend({
  store: Ember.inject.service(),
  currentUserBinding: 'auth.currentUser',

  init() {
    this._super(...arguments);

    this.set('flashes', LimitedArray.create({
      limit: 1,
      content: []
    }));
  },

  messages: function() {
    var flashes, model;

    flashes = this.get('flashes');
    model = [];
    if (flashes) {
      model.pushObjects(flashes.toArray().reverse());
    }
    return model.uniq();
  }.property('flashes.[]', 'flashes.length'),

  loadFlashes(msgs) {
    var i, len, msg, results, type;

    var callback = function() {
      return this.get('flashes.content').removeObject(msg);
    };

    results = [];
    for (i = 0, len = msgs.length; i < len; i++) {
      msg = msgs[i];
      type = Object.keys(msg)[0];
      msg = {
        type: type,
        message: msg[type]
      };
      this.get('flashes').unshiftObject(msg);
      results.push(Ember.run.later(this, callback, 15000));
    }
    return results;
  },

  close(msg) {
    return this.get('flashes').removeObject(msg);
  }
});