text: import discourseComputed from "discourse-common/utils/decorators";
  import { isEmpty } from "@ember/utils";
  import Controller from "@ember/controller";
  import { extractError } from "discourse/lib/ajax-error";
  import ModalFunctionality from "discourse/mixins/modal-functionality";
  import { ajax } from "discourse/lib/ajax";
  
  export default Controller.extend(ModalFunctionality, {
    loading: false,
  
    @discourseComputed("input", "loading", "result")
    disableAddButton(input, loading, result) {
      return loading || isEmpty(input) || input.length <= 0 || result;
    },
  
    actions: {
      cancel() {
        this.set("result", null);
      },
  
      add() {
        this.setProperties({
          loading: true,
          result: null
        });
  
        const users = this.input
          .split("\n")
          .uniq()
          .reject(x => x.length === 0);
  
        ajax("/admin/groups/bulk", {
          data: { users, group_id: this.get("model.id") },
          method: "PUT"
        })
          .then(result => {
            this.set("result", result);
  
            if (result.users_not_added) {
              this.set("result.invalidUsers", result.users_not_added.join(", "));
            }
          })
          .catch(error => {
            this.flash(extractError(error), "error");
          })
          .finally(() => {
            this.set("loading", false);
          });
      }
    }
  });
  