FEATURE: add topic tags changed trigger to chat integration (#208)
* FEATURE: add topic tags changed trigger to chat integration
* FEATURE: add placeholder for reply to topic trigger
add description on how to use the placeholder
* DEV: Move slack message creation to provider
Add tests to new method
* FEATURE: add ${URL} to placeholder replacements and added tags link
If triggered when a topic tag is changed, message behavior will follow what user defined in message.
* DEV: Update tests with tags
* DEV: add post to topic for testing
* DEV: update test strings
* DEV: add early return for topic tags changed trigger
* DEV: move early return to use try/catch
* DEV: update `create_slack_message` to not send a tuple of values
* DEV: refactor method to be more readable
* FEATURE: add `${ADDED_AND_REMOVED}` for default texts
* DEV: Update typo in test
* DEV: Add tests to check when if `create_slack_message` raises an error
* DEV: Remove the `tag_added` from chat-integration filter
Added migration to handle the migration of the `tag_added` filter from the chat-integration plugin.
Only removed the logic from the plugin, data removal will happen in a future PR
* DEV: lint migration file
* DEV: update chat-integration to not show "tag_added" rules
* DEV: update added and missing tags logic
* DEV: update context variable name
* DEV: update migration to include `begin/rescue` block and added a list with available filters
This commit is contained in:
@@ -23,6 +23,8 @@ export default class Rule extends RestModel {
|
||||
},
|
||||
];
|
||||
|
||||
possible_filters_id = ["thread", "watch", "follow", "mute"];
|
||||
|
||||
get available_filters() {
|
||||
const available = [];
|
||||
const provider = this.channel.provider;
|
||||
@@ -46,11 +48,6 @@ export default class Rule extends RestModel {
|
||||
name: I18n.t("chat_integration.filter.follow"),
|
||||
icon: "circle",
|
||||
},
|
||||
{
|
||||
id: "tag_added",
|
||||
name: I18n.t("chat_integration.filter.tag_added"),
|
||||
icon: "tag",
|
||||
},
|
||||
{
|
||||
id: "mute",
|
||||
name: I18n.t("chat_integration.filter.mute"),
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { action } from "@ember/object";
|
||||
import { getOwner } from "@ember/owner";
|
||||
import Group from "discourse/models/group";
|
||||
import DiscourseRoute from "discourse/routes/discourse";
|
||||
|
||||
@@ -13,14 +14,18 @@ export default class AdminPluginsChatIntegrationProvider extends DiscourseRoute
|
||||
Group.findAll(),
|
||||
]);
|
||||
|
||||
const enabledFilters =
|
||||
getOwner(this).lookup("model:rule").possible_filters_id;
|
||||
channels.forEach((channel) => {
|
||||
channel.set(
|
||||
"rules",
|
||||
channel.rules.map((rule) => {
|
||||
rule = this.store.createRecord("rule", rule);
|
||||
rule.set("channel", channel);
|
||||
return rule;
|
||||
})
|
||||
channel.rules
|
||||
.filter((rule) => enabledFilters.includes(rule.filter))
|
||||
.map((rule) => {
|
||||
rule = this.store.createRecord("rule", rule);
|
||||
rule.set("channel", channel);
|
||||
return rule;
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user