From d89b8b51484c68c6fe0b1325b5d59ee809cc2196 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sun, 23 Feb 2020 22:10:36 +0000 Subject: [PATCH 1/5] Fix downloading files in electron not being sent into browser Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/elements/ImageView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/elements/ImageView.js b/src/components/views/elements/ImageView.js index 7cc2741df7..bbe4487c60 100644 --- a/src/components/views/elements/ImageView.js +++ b/src/components/views/elements/ImageView.js @@ -216,7 +216,7 @@ export default class ImageView extends React.Component { { this.getName() } { eventMeta } - +
{ _t('Download this file') }
{ sizeRes } From d783ce86c827bbd6808d78cda95bdb588491581d Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sun, 23 Feb 2020 22:14:29 +0000 Subject: [PATCH 2/5] Use noreferrer in addition to noopener for edge case browsers Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/HtmlUtils.js | 2 +- src/Markdown.js | 2 +- src/components/structures/GroupView.js | 4 +-- src/components/structures/auth/Login.js | 4 +-- src/components/views/auth/AuthFooter.js | 2 +- .../auth/InteractiveAuthEntryComponents.js | 2 +- .../views/auth/ModularServerConfig.js | 2 +- .../views/auth/ServerTypeSelector.js | 2 +- .../views/context_menus/MessageContextMenu.js | 4 +-- .../views/context_menus/TopLeftMenu.js | 4 +-- .../views/dialogs/ChangelogDialog.js | 2 +- src/components/views/dialogs/InviteDialog.js | 4 +-- src/components/views/dialogs/ShareDialog.js | 2 +- src/components/views/dialogs/TermsDialog.js | 2 +- src/components/views/elements/AppTile.js | 2 +- src/components/views/elements/ImageView.js | 2 +- src/components/views/messages/MFileBody.js | 2 +- src/components/views/rooms/AuxPanel.js | 2 +- .../views/rooms/LinkPreviewWidget.js | 2 +- src/components/views/rooms/RoomPreviewBar.js | 2 +- .../views/settings/ChangePassword.js | 2 +- .../views/settings/EventIndexPanel.js | 4 +-- .../views/settings/ProfileSettings.js | 4 +-- .../settings/tabs/room/BridgeSettingsTab.js | 4 +-- .../tabs/room/SecurityRoomSettingsTab.js | 2 +- .../settings/tabs/user/HelpUserSettingsTab.js | 27 ++++++++++--------- .../settings/tabs/user/LabsUserSettingsTab.js | 2 +- .../views/terms/InlineTermsAgreement.js | 2 +- src/linkify-matrix.js | 2 +- src/usercontent/index.js | 2 +- src/utils/AutoDiscoveryUtils.js | 2 +- src/utils/ErrorUtils.js | 2 +- .../views/messages/TextualBody-test.js | 2 +- 33 files changed, 54 insertions(+), 53 deletions(-) diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js index 236aa0157e..7dd68e5c61 100644 --- a/src/HtmlUtils.js +++ b/src/HtmlUtils.js @@ -160,7 +160,7 @@ const transformTags = { // custom to matrix delete attribs.target; } } - attribs.rel = 'noopener'; // https://mathiasbynens.github.io/rel-noopener/ + attribs.rel = 'noreferrer noopener'; // https://mathiasbynens.github.io/rel-noopener/ return { tagName, attribs }; }, 'img': function(tagName, attribs) { diff --git a/src/Markdown.js b/src/Markdown.js index 437ceec88b..fb1f8bf0ea 100644 --- a/src/Markdown.js +++ b/src/Markdown.js @@ -136,7 +136,7 @@ export default class Markdown { // thus opening in a new tab. if (externalLinks) { attrs.push(['target', '_blank']); - attrs.push(['rel', 'noopener']); + attrs.push(['rel', 'noreferrer noopener']); } this.tag('a', attrs); } else { diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index 5ae0699a2f..e98dcae1a4 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -821,10 +821,10 @@ export default createReactClass({ {_t( "Want more than a community?
Get your own server", {}, { - a: sub => {sub}, + a: sub => {sub}, }, )} - +
; diff --git a/src/components/structures/auth/Login.js b/src/components/structures/auth/Login.js index c8b2a1ea9c..8a9bbb3ff5 100644 --- a/src/components/structures/auth/Login.js +++ b/src/components/structures/auth/Login.js @@ -481,7 +481,7 @@ export default createReactClass({ "Either use HTTPS or enable unsafe scripts.", {}, { 'a': (sub) => { - return { sub } @@ -497,7 +497,7 @@ export default createReactClass({ "is not blocking requests.", {}, { 'a': (sub) => { - return + return { sub } ; }, diff --git a/src/components/views/auth/AuthFooter.js b/src/components/views/auth/AuthFooter.js index 4076141606..1309800772 100644 --- a/src/components/views/auth/AuthFooter.js +++ b/src/components/views/auth/AuthFooter.js @@ -26,7 +26,7 @@ export default createReactClass({ render: function() { return (
- { _t("powered by Matrix") } + { _t("powered by Matrix") }
); }, diff --git a/src/components/views/auth/InteractiveAuthEntryComponents.js b/src/components/views/auth/InteractiveAuthEntryComponents.js index 6f6eb7e2a1..0b89c82658 100644 --- a/src/components/views/auth/InteractiveAuthEntryComponents.js +++ b/src/components/views/auth/InteractiveAuthEntryComponents.js @@ -331,7 +331,7 @@ export const TermsAuthEntry = createReactClass({ checkboxes.push( , ); } diff --git a/src/components/views/auth/ModularServerConfig.js b/src/components/views/auth/ModularServerConfig.js index 32418d3462..d8ce145e20 100644 --- a/src/components/views/auth/ModularServerConfig.js +++ b/src/components/views/auth/ModularServerConfig.js @@ -99,7 +99,7 @@ export default class ModularServerConfig extends ServerConfig { "Enter the location of your Modular homeserver. It may use your own " + "domain name or be a subdomain of modular.im.", {}, { - a: sub => + a: sub => {sub} , }, diff --git a/src/components/views/auth/ServerTypeSelector.js b/src/components/views/auth/ServerTypeSelector.js index 341f81c546..fe29b7f76c 100644 --- a/src/components/views/auth/ServerTypeSelector.js +++ b/src/components/views/auth/ServerTypeSelector.js @@ -46,7 +46,7 @@ export const TYPES = { label: () => _t('Premium'), logo: () => , description: () => _t('Premium hosting for organisations Learn more', {}, { - a: sub => + a: sub => {sub} , }), diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index ea5623fe48..be1c11ef97 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -420,7 +420,7 @@ export default createReactClass({ onClick={this.onPermalinkClick} href={permalink} target="_blank" - rel="noopener" + rel="noreferrer noopener" > { mxEvent.isRedacted() || mxEvent.getType() !== 'm.room.message' ? _t('Share Permalink') : _t('Share Message') } @@ -445,7 +445,7 @@ export default createReactClass({ element="a" className="mx_MessageContextMenu_field" target="_blank" - rel="noopener" + rel="noreferrer noopener" onClick={this.closeMenu} href={mxEvent.event.content.external_url} > diff --git a/src/components/views/context_menus/TopLeftMenu.js b/src/components/views/context_menus/TopLeftMenu.js index 51ec202b90..3221c25982 100644 --- a/src/components/views/context_menus/TopLeftMenu.js +++ b/src/components/views/context_menus/TopLeftMenu.js @@ -68,10 +68,10 @@ export default class TopLeftMenu extends React.Component { {_t( "Upgrade to your own domain", {}, { - a: sub => {sub}, + a: sub => {sub}, }, )} - + ; diff --git a/src/components/views/dialogs/ChangelogDialog.js b/src/components/views/dialogs/ChangelogDialog.js index e58f56a639..ab284cdb2e 100644 --- a/src/components/views/dialogs/ChangelogDialog.js +++ b/src/components/views/dialogs/ChangelogDialog.js @@ -52,7 +52,7 @@ export default class ChangelogDialog extends React.Component { _elementsForCommit(commit) { return (
  • - + {commit.commit.message.split('\n')[0]}
  • diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index 587fb9e454..67d090f3c1 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -1046,7 +1046,7 @@ export default class InviteDialog extends React.PureComponent { "If you can't find someone, ask them for their username, share your " + "username (%(userId)s) or profile link.", {userId}, - {a: (sub) => {sub}}, + {a: (sub) => {sub}}, ); buttonText = _t("Go"); goButtonFn = this._startDm; @@ -1055,7 +1055,7 @@ export default class InviteDialog extends React.PureComponent { helpText = _t( "If you can't find someone, ask them for their username (e.g. @user:server.com) or " + "share this room.", {}, - {a: (sub) => {sub}}, + {a: (sub) => {sub}}, ); buttonText = _t("Invite"); goButtonFn = this._inviteUsers; diff --git a/src/components/views/dialogs/ShareDialog.js b/src/components/views/dialogs/ShareDialog.js index 842c7fc109..b42a88ceac 100644 --- a/src/components/views/dialogs/ShareDialog.js +++ b/src/components/views/dialogs/ShareDialog.js @@ -218,7 +218,7 @@ export default class ShareDialog extends React.Component {
    { - socials.map((social) => {serviceName} {summary} - {termDoc[termsLang].name} + {termDoc[termsLang].name} { name }; + name = { name }; } return name; } diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index f67cd1b2b0..886afbb666 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -297,7 +297,7 @@ export default createReactClass({ } else if (contentUrl) { const downloadProps = { target: "_blank", - rel: "noopener", + rel: "noreferrer noopener", // We set the href regardless of whether or not we intercept the download // because we don't really want to convert the file to a blob eagerly, and diff --git a/src/components/views/rooms/AuxPanel.js b/src/components/views/rooms/AuxPanel.js index 50b25cb96f..0b34739e0e 100644 --- a/src/components/views/rooms/AuxPanel.js +++ b/src/components/views/rooms/AuxPanel.js @@ -219,7 +219,7 @@ export default createReactClass({ if (link) { span = ( - + { span } ); diff --git a/src/components/views/rooms/LinkPreviewWidget.js b/src/components/views/rooms/LinkPreviewWidget.js index c6374db464..4169a763b7 100644 --- a/src/components/views/rooms/LinkPreviewWidget.js +++ b/src/components/views/rooms/LinkPreviewWidget.js @@ -136,7 +136,7 @@ export default createReactClass({
    { img }
    -
    { p["og:title"] }
    +
    { p["og:title"] }
    { p["og:site_name"] ? (" - " + p["og:site_name"]) : null }
    { description } diff --git a/src/components/views/rooms/RoomPreviewBar.js b/src/components/views/rooms/RoomPreviewBar.js index 9af06190f7..4ff5dd5198 100644 --- a/src/components/views/rooms/RoomPreviewBar.js +++ b/src/components/views/rooms/RoomPreviewBar.js @@ -509,7 +509,7 @@ export default createReactClass({ "submit a bug report.", { errcode: this.props.error.errcode }, { issueLink: label => { label } }, + target="_blank" rel="noreferrer noopener">{ label } }, ), ]; break; diff --git a/src/components/views/settings/ChangePassword.js b/src/components/views/settings/ChangePassword.js index 3ba276d1fa..b51ff6cf9d 100644 --- a/src/components/views/settings/ChangePassword.js +++ b/src/components/views/settings/ChangePassword.js @@ -119,7 +119,7 @@ export default createReactClass({ 'In future this will be improved.', ) } {' '} - + https://github.com/vector-im/riot-web/issues/2671
    , diff --git a/src/components/views/settings/EventIndexPanel.js b/src/components/views/settings/EventIndexPanel.js index 80d93c4562..203a7ee46e 100644 --- a/src/components/views/settings/EventIndexPanel.js +++ b/src/components/views/settings/EventIndexPanel.js @@ -172,7 +172,7 @@ export default class EventIndexPanel extends React.Component { {}, { 'nativeLink': (sub) => {sub}, + rel="noreferrer noopener">{sub}, }, ) } @@ -188,7 +188,7 @@ export default class EventIndexPanel extends React.Component { {}, { 'riotLink': (sub) => {sub}, + target="_blank" rel="noreferrer noopener">{sub}, }, ) } diff --git a/src/components/views/settings/ProfileSettings.js b/src/components/views/settings/ProfileSettings.js index 8d2c289b15..72dfe7a983 100644 --- a/src/components/views/settings/ProfileSettings.js +++ b/src/components/views/settings/ProfileSettings.js @@ -132,10 +132,10 @@ export default class ProfileSettings extends React.Component { {_t( "Upgrade to your own domain", {}, { - a: sub => {sub}, + a: sub => {sub}, }, )} - + ; diff --git a/src/components/views/settings/tabs/room/BridgeSettingsTab.js b/src/components/views/settings/tabs/room/BridgeSettingsTab.js index d66732de55..a5d20eae33 100644 --- a/src/components/views/settings/tabs/room/BridgeSettingsTab.js +++ b/src/components/views/settings/tabs/room/BridgeSettingsTab.js @@ -68,7 +68,7 @@ export default class BridgeSettingsTab extends React.Component { { // TODO: We don't have this link yet: this will prevent the translators // having to re-translate the string when we do. - a: sub => {sub}, + a: sub => {sub}, }, )}