FIX: Do not perform link lookup for replaced links (#14742)

A link that was added because a watched word was replaced could create
a notice if the same link was present before.
This commit is contained in:
Bianca Nenciu 2021-10-28 13:27:31 +03:00 committed by GitHub
parent efc23b6a8d
commit 148ee1d162
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 0 deletions

View File

@ -505,6 +505,11 @@ export default Controller.extend({
$links.each((idx, l) => {
const href = l.href;
if (href && href.length) {
// skip links added by watched words
if (l.dataset.word !== undefined) {
return true;
}
// skip links in quotes and oneboxes
for (let element = l; element; element = element.parentElement) {
if (

View File

@ -139,6 +139,7 @@ export const DEFAULT_LIST = [
`a.inline-onebox`,
`a.inline-onebox-loading`,
"a[data-bbcode]",
"a[data-word]",
"a[name]",
"a[rel=nofollow]",
"a[rel=ugc]",

View File

@ -32,6 +32,8 @@ function findAllMatches(text, matchers) {
}
export function setup(helper) {
const opts = helper.getOptions();
helper.registerPlugin((md) => {
const matchers = [];
@ -139,6 +141,9 @@ export function setup(helper) {
if (htmlLinkLevel === 0 && state.md.validateLink(url)) {
token = new state.Token("link_open", "a", 1);
token.attrs = [["href", url]];
if (opts.discourse.previewing) {
token.attrs.push(["data-word", ""]);
}
token.level = level++;
token.markup = "linkify";
token.info = "auto";