From cf5b7698571f283361460bb7bd420496949e86fb Mon Sep 17 00:00:00 2001 From: Thibaut Girka Date: Sun, 26 Jan 2020 15:26:03 +0100 Subject: [PATCH] Add support for xmpp: and magnet: URIs to misleading link detection code --- .../glitch/components/status_content.js | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/components/status_content.js b/app/javascript/flavours/glitch/components/status_content.js index 2c79de4db6..a5822866ab 100644 --- a/app/javascript/flavours/glitch/components/status_content.js +++ b/app/javascript/flavours/glitch/components/status_content.js @@ -42,6 +42,14 @@ const isLinkMisleading = (link) => { const linkText = linkTextParts.join(''); const targetURL = new URL(link.href); + if (targetURL.protocol === 'magnet:') { + return !linkText.startsWith('magnet:'); + } + + if (targetURL.protocol === 'xmpp:') { + return !(linkText === targetURL.href || 'xmpp:' + linkText === targetURL.href); + } + // The following may not work with international domain names if (textMatchesTarget(linkText, targetURL.origin, targetURL.host) || textMatchesTarget(linkText.toLowerCase(), targetURL.origin, targetURL.host)) { return false; @@ -120,9 +128,19 @@ export default class StatusContent extends React.PureComponent { if (tagLinks && isLinkMisleading(link)) { // Add a tag besides the link to display its origin + const url = new URL(link.href); const tag = document.createElement('span'); tag.classList.add('link-origin-tag'); - tag.textContent = `[${new URL(link.href).host}]`; + switch (url.protocol) { + case 'xmpp:': + tag.textContent = `[${url.href}]`; + break; + case 'magnet:': + tag.textContent = '(magnet)'; + break; + default: + tag.textContent = `[${url.host}]`; + } link.insertAdjacentText('beforeend', ' '); link.insertAdjacentElement('beforeend', tag); }