import ObjectController from 'discourse/controllers/object';

// Handles displaying of a topic as a list item
export default ObjectController.extend({
  needs: ['discovery/topics'],

  canStar: Em.computed.alias('controllers.discovery/topics.currentUser.id'),
  bulkSelectEnabled: Em.computed.alias('controllers.discovery/topics.bulkSelectEnabled'),
  showTopicPostBadges: Em.computed.not('controllers.discovery/topics.new'),

  checked: function(key, value) {
    var selected = this.get('controllers.discovery/topics.selected'),
        topic = this.get('model');

    if (arguments.length > 1) {
      if (value) {
        selected.addObject(topic);
      } else {
        selected.removeObject(topic);
      }
    }
    return selected.contains(topic);
  }.property('controllers.discovery/topics.selected.length'),

  titleColSpan: function() {
    // Uncategorized pinned topics will span the title and category column in the topic list.
    return (!this.get('controllers.discovery/topics.hideCategory') &&
             this.get('model.isPinnedUncategorized') ? 2 : 1);
  }.property('controllers.discovery/topics.hideCategory', 'model.isPinnedUncategorized'),

  hideCategory: function() {
    return this.get('controllers.discovery/topics.hideCategory') || this.get('titleColSpan') > 1;
  }.property('controllers.discovery/topics.hideCategory', 'titleColSpan'),

  actions: {
    toggleStar: function() {
      this.get('model').toggleStar();
    }
  }
});
