import ModalFunctionality from 'discourse/mixins/modal-functionality';
import computed from 'ember-addons/ember-computed-decorators';
import { popupAjaxError } from 'discourse/lib/ajax-error';

export default Ember.Controller.extend(ModalFunctionality, {
  silenceUntil: null,
  reason: null,
  message: null,
  silencing: false,
  user: null,
  post: null,
  successCallback: null,

  onShow() {
    this.setProperties({
      silenceUntil: null,
      reason: null,
      message: null,
      silencing: false,
      loadingUser: true,
      post: null,
      successCallback: null,
    });
  },

  @computed('silenceUntil', 'reason', 'silencing')
  submitDisabled(silenceUntil, reason, silencing) {
    return (silencing || Ember.isEmpty(silenceUntil) || !reason || reason.length < 1);
  },

  actions: {
    silence() {
      if (this.get('submitDisabled')) { return; }

      this.set('silencing', true);
      this.get('user').silence({
        silenced_till: this.get('silenceUntil'),
        reason: this.get('reason'),
        message: this.get('message'),
        post_id: this.get('post.id')
      }).then(result => {
        this.send('closeModal');
        let callback = this.get('successCallback');
        if (callback) {
          callback(result);
        }
      }).catch(popupAjaxError).finally(() => this.set('silencing', false));
    }
  }
});