import discourseComputed from "discourse-common/utils/decorators";

export const States = {
  UNCHECKED: 0,
  INVALID: 1,
  VALID: 2,
};

export default {
  _validState: null,
  errorDescription: null,

  init() {
    this._super(...arguments);
    this.set("_validState", States.UNCHECKED);
  },

  @discourseComputed("_validState")
  valid: (state) => state === States.VALID,

  @discourseComputed("_validState")
  invalid: (state) => state === States.INVALID,

  @discourseComputed("_validState")
  unchecked: (state) => state === States.UNCHECKED,

  setValid(valid, description) {
    this.set("_validState", valid ? States.VALID : States.INVALID);

    if (!valid && description && description.length) {
      this.set("errorDescription", description);
    } else {
      this.set("errorDescription", null);
    }
  },
};