import Controller from "@ember/controller";
import I18n from "I18n";
import { ajax } from "discourse/lib/ajax";
import bootbox from "bootbox";
import { empty } from "@ember/object/computed";
import { observes } from "discourse-common/utils/decorators";

export default Controller.extend({
  /**
    Is the "send test email" button disabled?

    @property sendTestEmailDisabled
  **/
  sendTestEmailDisabled: empty("testEmailAddress"),

  /**
    Clears the 'sentTestEmail' property on successful send.

    @method testEmailAddressChanged
  **/
  @observes("testEmailAddress")
  testEmailAddressChanged: function () {
    this.set("sentTestEmail", false);
  },

  actions: {
    /**
      Sends a test email to the currently entered email address

      @method sendTestEmail
    **/
    sendTestEmail: function () {
      this.setProperties({
        sendingEmail: true,
        sentTestEmail: false,
      });

      ajax("/admin/email/test", {
        type: "POST",
        data: { email_address: this.testEmailAddress },
      })
        .then((response) =>
          this.set("sentTestEmailMessage", response.sent_test_email_message)
        )
        .catch((e) => {
          if (e.responseJSON && e.responseJSON.errors) {
            bootbox.alert(
              I18n.t("admin.email.error", {
                server_error: e.responseJSON.errors[0],
              })
            );
          } else {
            bootbox.alert(I18n.t("admin.email.test_error"));
          }
        })
        .finally(() => this.set("sendingEmail", false));
    },
  },
});
