text: import Ember from 'ember';
  
  export default Ember.Component.extend({
    allowTeams: true,
  
    checking: false,
    addInput: '',
  
    actions: {
      add: function() {
        if ( this.get('checking') )
        {
          return;
        }
  
        this.set('checking', true);
        var input = this.get('addInput').trim();
  
        this.get('github').find('user_or_org', input).then((info) => {
          this.set('addInput','');
          this.send('addObject', info);
        }).catch(() => {
          this.sendAction('onError','User or organization not found: ' + input);
        }).finally(() => {
          this.set('checking', false);
        });
      },
  
      addObject: function(info) {
        this.sendAction('action', Ember.Object.create({
          id: info.get('id'),
          type: info.get('type'),
        }));
      }
    },
  
    addDisabled: function() {
      return this.get('checking') || this.get('addInput').trim().length === 0;
    }.property('addInput','checking'),
  
    orgChoices: function() {
      var orgs = (this.get('session.orgs')||[]).slice().sort().map(function(id) {
        return Ember.Object.create({
          id: id,
          type: 'org',
          teams: []
        });
      });
  
      (this.get('session.teams')||[]).forEach(function(team) {
        var org = orgs.filterProperty('id', team.org)[0];
        if ( org )
        {
          org.teams.pushObject(Ember.Object.create({
            id: team.id,
            type: 'team',
            name: team.name,
          }));
        }
      });
  
      return orgs;
    }.property('session.orgs.[]','session.teams.@each.id'),
  });
  