From 7a6e9d0f0fb9fee04b3dd7ba3af45d771878c3d6 Mon Sep 17 00:00:00 2001 From: PGXD/HatLink Date: Thu, 12 Feb 2026 14:34:12 +0100 Subject: [PATCH] update: allow anything excpet javascript, even ip addresses --- src/components/RichText.tsx | 2 +- src/lib/strings/website.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/RichText.tsx b/src/components/RichText.tsx index 60c675e05..535ec5bcd 100644 --- a/src/components/RichText.tsx +++ b/src/components/RichText.tsx @@ -13,7 +13,7 @@ import {Text, type TextProps} from '#/components/Typography' const WORD_WRAP = {wordWrap: 1} // lifted from facet detection in `RichText` impl, _without_ `gm` flags const URL_REGEX = - /(^|\s|\()((https?:\/\/[\S]+)|(steam:\/\/[\S]+)|((?[a-z][a-z0-9]*(\.[a-z0-9]+)+)[\S]*))/i + /(^|\s|\()(?!javascript:)([a-z][a-z0-9+.-]*:\/\/[\S]+|(?:[a-z0-9]+\.)+[a-z0-9]+(:[0-9]+)?[\S]*|[a-z][a-z0-9+.-]*:[^\s()]+)/i export type RichTextProps = TextStyleProp & Pick & { diff --git a/src/lib/strings/website.ts b/src/lib/strings/website.ts index 011271557..689a2e9ff 100644 --- a/src/lib/strings/website.ts +++ b/src/lib/strings/website.ts @@ -4,9 +4,9 @@ export function sanitizeWebsiteForDisplay(website: string): string { export function sanitizeWebsiteForLink(website: string): string { const normalized = website.toLowerCase() - return normalized.startsWith('https') || normalized.startsWith('steam') + return !normalized.startsWith('javascript') ? normalized - : `https://${website.toLowerCase()}` + : `unsafe-${website}` } export function isValidWebsiteFormat(website: string): boolean { -- 2.51.2