mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 06:37:23 +01:00
fix(chat) - graceful for failure and fix link regex (#12225)
* fix(chat) - graceful for failure and fix link regex * fix(chat) - Adjust unit test to test for the actual functional failure
This commit is contained in:
@@ -149,6 +149,14 @@ describe('highlightMentions', () => {
|
|||||||
|
|
||||||
expect(result[0]).to.equal('[@user](/profile/111) `@user`');
|
expect(result[0]).to.equal('[@user](/profile/111) `@user`');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('matches a link in between two the same links', async () => {
|
||||||
|
const text = '[here](http://habitica.wikia.com/wiki/The_Keep:Pirate_Cove/FAQ)\n@user\n[hier](http://habitica.wikia.com/wiki/The_Keep:Pirate_Cove/FAQ)';
|
||||||
|
|
||||||
|
const result = await highlightMentions(text);
|
||||||
|
|
||||||
|
expect(result[0]).to.equal('[here](http://habitica.wikia.com/wiki/The_Keep:Pirate_Cove/FAQ)\n[@user](/profile/111)\n[hier](http://habitica.wikia.com/wiki/The_Keep:Pirate_Cove/FAQ)');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('github issue 12118, method crashes when square brackets are used', async () => {
|
it('github issue 12118, method crashes when square brackets are used', async () => {
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ function toSourceMapRegex (token) {
|
|||||||
} else if (type === 'link_open') {
|
} else if (type === 'link_open') {
|
||||||
const texts = token.textContents.map(escapeRegExp);
|
const texts = token.textContents.map(escapeRegExp);
|
||||||
regexStr = markup === 'linkify' || markup === 'autolink' ? texts[0]
|
regexStr = markup === 'linkify' || markup === 'autolink' ? texts[0]
|
||||||
: `\\[.*${texts.join('.*')}.*\\]\\([^)]+\\)`;
|
: `\\[[^\\]]*${texts.join('[^\\]]*')}[^\\]]*\\]\\([^)]+\\)`;
|
||||||
} else {
|
} else {
|
||||||
throw new Error(`No source mapping regex defined for ignore blocks of type ${type}`);
|
throw new Error(`No source mapping regex defined for ignore blocks of type ${type}`);
|
||||||
}
|
}
|
||||||
@@ -111,6 +111,11 @@ function findTextBlocks (text) {
|
|||||||
const targetText = text.substr(index);
|
const targetText = text.substr(index);
|
||||||
const match = targetText.match(regex);
|
const match = targetText.match(regex);
|
||||||
|
|
||||||
|
if (!match) {
|
||||||
|
// Should not happen, but insert to handle bugs gracefully
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (match.index) {
|
if (match.index) {
|
||||||
blocks.push({ text: targetText.substr(0, match.index), ignore: false });
|
blocks.push({ text: targetText.substr(0, match.index), ignore: false });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user