import DiscourseController from 'discourse/controllers/controller';

export default DiscourseController.extend({
  poll: null,
  showResults: Em.computed.oneWay('poll.closed'),
  disableRadio: Em.computed.any('poll.closed', 'loading'),
  showToggleClosePoll: function() {
    return this.get('poll.post.topic.details.can_edit') && !Discourse.SiteSettings.allow_user_locale;
  }.property('poll.post.topic.details.can_edit'),

  actions: {
    selectOption: function(option) {
      if (this.get('disableRadio')) {
        return;
      }

      if (!this.get('currentUser.id')) {
        this.get('postController').send('showLogin');
        return;
      }

      this.set('loading', true);
      this.get('poll').saveVote(option).then(function() {
        this.set('loading', false);
        this.set('showResults', true);
      }.bind(this));
    },

    toggleShowResults: function() {
      this.set('showResults', !this.get('showResults'));
    },

    toggleClosePoll: function() {
      this.set('loading', true);
      return Discourse.ajax("/poll/toggle_close", {
        type: "PUT",
        data: {post_id: this.get('poll.post.id')}
      }).then(function(topicJson) {
        this.set('poll.post.topic.title', topicJson.basic_topic.title);
        this.set('poll.post.topic.fancy_title', topicJson.basic_topic.title);
        this.set('loading', false);
      }.bind(this));
    }
  }
});