Include noreferrer on embed links / window.open.

This commit is contained in:
Paul 2021-09-17 09:37:07 +01:00
parent d5430a7920
commit 51f23f5aa0
4 changed files with 15 additions and 13 deletions

View file

@ -19,8 +19,6 @@ import { useCallback, useContext } from "preact/hooks";
import { internalEmit } from "../../lib/eventEmitter"; import { internalEmit } from "../../lib/eventEmitter";
import { determineLink } from "../../lib/links"; import { determineLink } from "../../lib/links";
import { getState } from "../../redux";
import { useIntermediate } from "../../context/intermediate/Intermediate"; import { useIntermediate } from "../../context/intermediate/Intermediate";
import { AppContext } from "../../context/revoltjs/RevoltClient"; import { AppContext } from "../../context/revoltjs/RevoltClient";
@ -221,6 +219,7 @@ export default function Renderer({ content, disallowBigEmoji }: MarkdownProps) {
} }
case "external": { case "external": {
element.setAttribute("target", "_blank"); element.setAttribute("target", "_blank");
element.setAttribute("rel", "noreferrer");
break; break;
} }
} }

View file

@ -151,15 +151,15 @@ export default function Intermediate(props: Props) {
id: "external_link_prompt", id: "external_link_prompt",
link: link.href, link: link.href,
}); });
return true; return true;
} }
return false; return false;
} }
default: {
return true;
}
} }
return true;
}, },
openScreen: (screen: Screen) => openScreen(screen), openScreen: (screen: Screen) => openScreen(screen),
writeClipboard: (text: string) => { writeClipboard: (text: string) => {

View file

@ -1,8 +1,9 @@
import { Text } from "preact-i18n"; import { Text } from "preact-i18n";
import Modal from "../../../components/ui/Modal";
import { dispatch } from "../../../redux"; import { dispatch } from "../../../redux";
import Modal from "../../../components/ui/Modal";
interface Props { interface Props {
onClose: () => void; onClose: () => void;
link: string; link: string;
@ -17,7 +18,7 @@ export function ExternalLinkModal({ onClose, link }: Props) {
actions={[ actions={[
{ {
onClick: () => { onClick: () => {
window.open(link, "_blank"); window.open(link, "_blank", "noreferrer");
onClose(); onClose();
}, },
confirmation: true, confirmation: true,
@ -36,15 +37,17 @@ export function ExternalLinkModal({ onClose, link }: Props) {
const url = new URL(link); const url = new URL(link);
dispatch({ dispatch({
type: "TRUSTED_LINKS_ADD_DOMAIN", type: "TRUSTED_LINKS_ADD_DOMAIN",
domain: url.hostname domain: url.hostname,
}); });
} catch(e) {} } catch (e) {}
window.open(link, "_blank"); window.open(link, "_blank", "noreferrer");
onClose(); onClose();
}, },
plain: true, plain: true,
children: <Text id="app.special.modals.external_links.trust_domain" />, children: (
} <Text id="app.special.modals.external_links.trust_domain" />
),
},
]}> ]}>
<Text id="app.special.modals.external_links.short" /> <br /> <Text id="app.special.modals.external_links.short" /> <br />
<a>{link}</a> <a>{link}</a>

View file

@ -53,7 +53,7 @@ export function Feedback() {
</CategoryButton> </CategoryButton>
</a> </a>
<Link to="/invite/Testers"> <Link to="/invite/Testers">
<a target="_blank" rel="noreferrer"> <a>
<CategoryButton <CategoryButton
hover hover
action="chevron" action="chevron"