text: import I18n from "I18n";
  import RestModel from "discourse/models/rest";
  import Category from "discourse/models/category";
  import computed, { observes } from "discourse-common/utils/decorators";
  
  export default RestModel.extend({
    @computed("channel.provider")
    available_filters(provider) {
      const available = [];
  
      if (provider === "slack") {
        available.push({
          id: "thread",
          name: I18n.t("chat_integration.filter.thread"),
          icon: "chevron-right",
        });
      }
  
      available.push(
        {
          id: "watch",
          name: I18n.t("chat_integration.filter.watch"),
          icon: "exclamation-circle",
        },
        {
          id: "follow",
          name: I18n.t("chat_integration.filter.follow"),
          icon: "circle",
        },
        {
          id: "mute",
          name: I18n.t("chat_integration.filter.mute"),
          icon: "times-circle",
        }
      );
  
      return available;
    },
  
    available_types: [
      { id: "normal", name: I18n.t("chat_integration.type.normal") },
      {
        id: "group_message",
        name: I18n.t("chat_integration.type.group_message"),
      },
      {
        id: "group_mention",
        name: I18n.t("chat_integration.type.group_mention"),
      },
    ],
  
    category_id: null,
    tags: null,
    channel_id: null,
    filter: "watch",
    type: "normal",
    error_key: null,
    new_topic_prefix: "{username} just posted a new topic in the {category} category!",
    new_reply_prefix: "{username} just posted a reply to {title} in the {category} category!",
    MSG_FIELDS: "Fields: {username}, {title}, {category}, {views}, {likes}",
  
    @observes("type")
    removeUnneededInfo() {
      const type = this.get("type");
  
      if (type === "normal") {
        this.set("group_id", null);
      } else {
        this.set("category_id", null);
      }
    },
  
    @computed("category_id")
    category(categoryId) {
      if (categoryId) {
        return Category.findById(categoryId);
      } else {
        return false;
      }
    },
  
    @computed("filter")
    filterName(filter) {
      return I18n.t(`chat_integration.filter.${filter}`);
    },
  
    updateProperties() {
      return this.getProperties([
        "type",
        "category_id",
        "group_id",
        "tags",
        "filter",
        "new_topic_prefix",
        "new_reply_prefix",
      ]);
    },
  
    createProperties() {
      return this.getProperties([
        "type",
        "channel_id",
        "category_id",
        "group_id",
        "tags",
        "filter",
        "new_topic_prefix",
        "new_reply_prefix",
      ]);
    },
  });
  