feat: always show link warning for masked links

This commit is contained in:
Paul Makles 2023-06-12 09:51:17 +01:00
parent 449eee006d
commit fead4ca879
No known key found for this signature in database
GPG key ID: 5059F398521BB0F6
4 changed files with 27 additions and 5 deletions

2
external/lang vendored

@ -1 +1 @@
Subproject commit 4cfba33bf590ccaec2ad957c43bec14b14ed2f8b Subproject commit 42a8856899a6698fff3d3d6b332e343d6384e081

View file

@ -142,7 +142,11 @@ export default function Embed({ embed }: Props) {
<a <a
onMouseDown={(ev) => onMouseDown={(ev) =>
(ev.button === 0 || ev.button === 1) && (ev.button === 0 || ev.button === 1) &&
modalController.openLink(embed.url!) modalController.openLink(
embed.url!,
undefined,
true,
)
} }
className={styles.title}> className={styles.title}>
{embed.title} {embed.title}
@ -194,7 +198,8 @@ export default function Embed({ embed }: Props) {
modalController.push({ type: "image_viewer", embed }) modalController.push({ type: "image_viewer", embed })
} }
onMouseDown={(ev) => onMouseDown={(ev) =>
ev.button === 1 && modalController.openLink(embed.url) ev.button === 1 &&
modalController.openLink(embed.url, undefined, true)
} }
/> />
); );

View file

@ -27,7 +27,11 @@ export function RenderAnchor({
target="_blank" target="_blank"
rel="noreferrer" rel="noreferrer"
onClick={(ev) => onClick={(ev) =>
modalController.openLink(href) && ev.preventDefault() modalController.openLink(
href,
undefined,
ev.currentTarget.innerText !== href,
) && ev.preventDefault()
} }
/> />
); );

View file

@ -208,12 +208,25 @@ class ModalControllerExtended extends ModalController<Modal> {
* Safely open external or internal link * Safely open external or internal link
* @param href Raw URL * @param href Raw URL
* @param trusted Whether we trust this link * @param trusted Whether we trust this link
* @param mismatch Whether to always open link warning
* @returns Whether to cancel default event * @returns Whether to cancel default event
*/ */
openLink(href?: string, trusted?: boolean) { openLink(href?: string, trusted?: boolean, mismatch?: boolean) {
const link = determineLink(href); const link = determineLink(href);
const settings = getApplicationState().settings; const settings = getApplicationState().settings;
if (mismatch) {
if (href) {
modalController.push({
type: "link_warning",
link: href,
callback: () => this.openLink(href, true) as true,
});
}
return true;
}
switch (link.type) { switch (link.type) {
case "navigate": { case "navigate": {
history.push(link.path); history.push(link.path);