forked from matrix/element-web
PushRules settings: if a newly typed keyword was part of a push rule not managed by the Vector UI, delete the rule and create it compliant with Vector parameters
This commit is contained in:
parent
1c03c208e1
commit
e5b7a47fee
|
@ -167,7 +167,7 @@ module.exports = React.createClass({
|
||||||
|
|
||||||
if (should_leave && self.newKeywords) {
|
if (should_leave && self.newKeywords) {
|
||||||
var cli = MatrixClientPeg.get();
|
var cli = MatrixClientPeg.get();
|
||||||
var deferreds = [];
|
var removeDeferreds = [];
|
||||||
|
|
||||||
var newKeywords = self.newKeywords.split(',');
|
var newKeywords = self.newKeywords.split(',');
|
||||||
for (var i in newKeywords) {
|
for (var i in newKeywords) {
|
||||||
|
@ -185,31 +185,46 @@ module.exports = React.createClass({
|
||||||
vectorContentRulesPatterns.push(rule.pattern);
|
vectorContentRulesPatterns.push(rule.pattern);
|
||||||
|
|
||||||
if (-1 === newKeywords.indexOf(rule.pattern)) {
|
if (-1 === newKeywords.indexOf(rule.pattern)) {
|
||||||
deferreds.push(cli.deletePushRule('global', rule.kind, rule.rule_id));
|
removeDeferreds.push(cli.deletePushRule('global', rule.kind, rule.rule_id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the new ones
|
// If the keyword is part of `externalContentRules`, remove the rule
|
||||||
for (var i in newKeywords) {
|
// before recreating it in the right Vector path
|
||||||
var keyword = newKeywords[i];
|
for (var i in self.state.externalContentRules) {
|
||||||
|
var rule = self.state.externalContentRules[i];
|
||||||
|
|
||||||
if (-1 === vectorContentRulesPatterns.indexOf(keyword)) {
|
if (-1 !== newKeywords.indexOf(rule.pattern)) {
|
||||||
deferreds.push(cli.addPushRule('global', 'content', keyword, {
|
removeDeferreds.push(cli.deletePushRule('global', rule.kind, rule.rule_id));
|
||||||
actions: self._actionsFor(self.state.vectorContentRules.state),
|
|
||||||
pattern: keyword
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
q.all(deferreds).done(function(resps) {
|
var onError = function(error) {
|
||||||
self._refreshFromServer();
|
|
||||||
}, function(error) {
|
|
||||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||||
Modal.createDialog(ErrorDialog, {
|
Modal.createDialog(ErrorDialog, {
|
||||||
title: "Can't update keywords",
|
title: "Can't update keywords",
|
||||||
description: error.toString()
|
description: error.toString()
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
|
|
||||||
|
// Then, add the new ones
|
||||||
|
q.all(removeDeferreds).done(function(resps) {
|
||||||
|
var deferreds = [];
|
||||||
|
for (var i in newKeywords) {
|
||||||
|
var keyword = newKeywords[i];
|
||||||
|
|
||||||
|
if (-1 === vectorContentRulesPatterns.indexOf(keyword)) {
|
||||||
|
deferreds.push(cli.addPushRule('global', 'content', keyword, {
|
||||||
|
actions: self._actionsFor(self.state.vectorContentRules.state),
|
||||||
|
pattern: keyword
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
q.all(deferreds).done(function(resps) {
|
||||||
|
self._refreshFromServer();
|
||||||
|
}, onError);
|
||||||
|
}, onError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue