From eb668538aacbe9790ad27495dea29e53b8f31a59 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 23 Mar 2022 13:38:57 +0000 Subject: [PATCH] Fix issue with falsey hrefs being sent in events (#8113) --- src/HtmlUtils.tsx | 4 ++++ src/linkify-matrix.ts | 14 +++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/HtmlUtils.tsx b/src/HtmlUtils.tsx index 2f574351c94..5a2318db176 100644 --- a/src/HtmlUtils.tsx +++ b/src/HtmlUtils.tsx @@ -182,7 +182,11 @@ const transformTags: IExtendedSanitizeOptions["transformTags"] = { // custom to ) { delete attribs.target; } + } else { + // Delete the href attrib if it is falsey + delete attribs.href; } + attribs.rel = 'noreferrer noopener'; // https://mathiasbynens.github.io/rel-noopener/ return { tagName, attribs }; }, diff --git a/src/linkify-matrix.ts b/src/linkify-matrix.ts index feb5e5dc409..c42d98d326c 100644 --- a/src/linkify-matrix.ts +++ b/src/linkify-matrix.ts @@ -156,21 +156,21 @@ export const options = { // intercept local permalinks to users and show them like userids (in userinfo of current room) try { const permalink = parsePermalink(href); - if (permalink && permalink.userId) { + if (permalink?.userId) { return { // @ts-ignore see https://linkify.js.org/docs/options.html - click: function(e) { + click: function(e: MouseEvent) { onUserClick(e, permalink.userId); }, }; } else { - // for events, rooms etc. (anything other then users) + // for events, rooms etc. (anything other than users) const localHref = tryTransformPermalinkToLocalHref(href); if (localHref !== href) { // it could be converted to a localHref -> therefore handle locally return { // @ts-ignore see https://linkify.js.org/docs/options.html - click: function(e) { + click: function(e: MouseEvent) { e.preventDefault(); window.location.hash = localHref; }, @@ -185,7 +185,7 @@ export const options = { case Type.UserId: return { // @ts-ignore see https://linkify.js.org/docs/options.html - click: function(e) { + click: function(e: MouseEvent) { const userId = parsePermalink(href).userId; onUserClick(e, userId); }, @@ -193,7 +193,7 @@ export const options = { case Type.RoomAlias: return { // @ts-ignore see https://linkify.js.org/docs/options.html - click: function(e) { + click: function(e: MouseEvent) { const alias = parsePermalink(href).roomIdOrAlias; onAliasClick(e, alias); }, @@ -202,7 +202,7 @@ export const options = { case Type.GroupId: return { // @ts-ignore see https://linkify.js.org/docs/options.html - click: function(e) { + click: function(e: MouseEvent) { const groupId = parsePermalink(href).groupId; onGroupClick(e, groupId); },