import Component from "@ember/component";
import EmberObject from "@ember/object";
import { cloneJSON } from "discourse-common/lib/object";
import Category from "discourse/models/category";
import discourseComputed from "discourse-common/utils/decorators";
import I18n from "I18n";

export default Component.extend({
  classNames: ["realtime-validations"],
  @discourseComputed
  timeUnits() {
    return ["days", "weeks", "months", "years"].map((unit) => {
      return {
        id: unit,
        name: I18n.t(`admin.wizard.field.validations.time_units.${unit}`),
      };
    });
  },

  init() {
    this._super(...arguments);
    if (!this.validations) {
      return;
    }

    if (!this.field.validations) {
      const validations = {};

      this.validations.forEach((validation) => {
        validations[validation] = {};
      });

      this.set("field.validations", EmberObject.create(validations));
    }

    const validationBuffer = cloneJSON(this.get("field.validations"));
    let bufferCategories;
    if (
      validationBuffer.similar_topics &&
      (bufferCategories = validationBuffer.similar_topics.categories)
    ) {
      const categories = Category.findByIds(bufferCategories);
      validationBuffer.similar_topics.categories = categories;
    }
    this.set("validationBuffer", validationBuffer);
  },

  actions: {
    updateValidationCategories(type, validation, categories) {
      this.set(`validationBuffer.${type}.categories`, categories);
      this.set(
        `field.validations.${type}.categories`,
        categories.map((category) => category.id)
      );
    },
  },
});