Merge pull request #1779 from thelounge/xpaw/nick-links-fixes
Fix nicks not being detected in actions and duplicate nicks
This commit is contained in:
commit
b2835855c0
@ -2,15 +2,17 @@
|
|||||||
|
|
||||||
function findNames(text, users) {
|
function findNames(text, users) {
|
||||||
const result = [];
|
const result = [];
|
||||||
let index = 0;
|
let index = -1;
|
||||||
|
|
||||||
users.forEach((nick) => {
|
users.forEach((nick) => {
|
||||||
index = text.indexOf(nick, index);
|
index = text.indexOf(nick, ++index);
|
||||||
result.push({
|
result.push({
|
||||||
start: index,
|
start: index,
|
||||||
end: index + nick.length,
|
end: index + nick.length,
|
||||||
nick: nick,
|
nick: nick,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{> ../user_name from}}
|
{{> ../user_name from}}
|
||||||
<span class="text">{{{parse text}}}</span>
|
<span class="text">{{{parse text users}}}</span>
|
||||||
|
|
||||||
{{#each previews}}
|
{{#each previews}}
|
||||||
<div class="preview" data-url="{{link}}"></div>
|
<div class="preview" data-url="{{link}}"></div>
|
||||||
|
@ -23,4 +23,29 @@ describe("findNames", () => {
|
|||||||
|
|
||||||
expect(actual).to.deep.equal(expected);
|
expect(actual).to.deep.equal(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should find same nick multiple times", () => {
|
||||||
|
const input = "xPaw xPaw xPaw";
|
||||||
|
const expected = [
|
||||||
|
{
|
||||||
|
start: 0,
|
||||||
|
end: 4,
|
||||||
|
nick: "xPaw",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
start: 5,
|
||||||
|
end: 9,
|
||||||
|
nick: "xPaw",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
start: 10,
|
||||||
|
end: 14,
|
||||||
|
nick: "xPaw",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const nicks = ["xPaw", "xPaw", "xPaw"];
|
||||||
|
const actual = findNames(input, nicks);
|
||||||
|
|
||||||
|
expect(actual).to.deep.equal(expected);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user