105 lines
2.1 KiB
JavaScript
105 lines
2.1 KiB
JavaScript
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,
|
|
|
|
@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",
|
|
]);
|
|
},
|
|
|
|
createProperties() {
|
|
return this.getProperties([
|
|
"type",
|
|
"channel_id",
|
|
"category_id",
|
|
"group_id",
|
|
"tags",
|
|
"filter",
|
|
]);
|
|
},
|
|
});
|