client/tags: fix detecting changes to names

Since 243ab15 the order of tag aliases matters, so the changes need to
pick up also permuting - which were ignored before.
This commit is contained in:
rr- 2016-08-28 23:48:50 +02:00
parent 4bfdd4c5cb
commit 997eb3de63
2 changed files with 13 additions and 2 deletions

View file

@ -45,7 +45,7 @@ class Tag extends events.EventTarget {
const detail = {version: this._version};
// send only changed fields to avoid user privilege violation
if (misc.arraysDiffer(this._names, this._orig._names)) {
if (misc.arraysDiffer(this._names, this._orig._names, true)) {
detail.names = this._names;
}
if (this._category !== this._orig._category) {

View file

@ -252,9 +252,20 @@ function escapeHtml(unsafe) {
.replace(/'/g, ''');
}
function arraysDiffer(source1, source2) {
function arraysDiffer(source1, source2, orderImportant) {
source1 = [...source1];
source2 = [...source2];
if (orderImportant === true) {
if (source1.length !== source2.length) {
return true;
}
for (let i = 0; i < source1.length; i++) {
if (source1[i] !== source2[i]) {
return true;
}
}
return false;
}
return (
source1.filter(value => !source2.includes(value)).length > 0 ||
source2.filter(value => !source1.includes(value)).length > 0);