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)
      );
    },
  },
});