import Category from "discourse/models/category";
import DiscourseURL from "discourse/lib/url";
import EmberObject from "@ember/object";
import { ajax } from "discourse/lib/ajax";
import discourseComputed from "discourse-common/utils/decorators";

const Permalink = EmberObject.extend({
  save: function () {
    return ajax("/admin/permalinks.json", {
      type: "POST",
      data: {
        url: this.url,
        permalink_type: this.permalink_type,
        permalink_type_value: this.permalink_type_value,
      },
    });
  },

  @discourseComputed("category_id")
  category: function (category_id) {
    return Category.findById(category_id);
  },

  @discourseComputed("external_url")
  linkIsExternal: function (external_url) {
    return !DiscourseURL.isInternal(external_url);
  },

  destroy: function () {
    return ajax("/admin/permalinks/" + this.id + ".json", {
      type: "DELETE",
    });
  },
});

Permalink.reopenClass({
  findAll: function (filter) {
    return ajax("/admin/permalinks.json", { data: { filter: filter } }).then(
      function (permalinks) {
        return permalinks.map((p) => Permalink.create(p));
      }
    );
  },
});

export default Permalink;
