diff --git a/src/lib/components/SocialButton.svelte b/src/lib/components/SocialButton.svelte index dd1ff40..f12be28 100644 --- a/src/lib/components/SocialButton.svelte +++ b/src/lib/components/SocialButton.svelte @@ -1,5 +1,5 @@ - - - + + + - \ No newline at end of file + diff --git a/src/lib/util/IconResolver.ts b/src/lib/util/LinkResolver.ts similarity index 74% rename from src/lib/util/IconResolver.ts rename to src/lib/util/LinkResolver.ts index 1488d59..28fc72e 100644 --- a/src/lib/util/IconResolver.ts +++ b/src/lib/util/LinkResolver.ts @@ -62,4 +62,22 @@ export function tryGetIcon(link: string): string { } return getIconFromUrl(url) ?? icons['none']; +} + +/** + * Проверка на "локальность" ссылки - принадлежность её этому сайту. Используется, например, + * в социальных ссылках, чтобы не открывать новую вкладку для страниц сайта. + * @param link Локальная либо глобальная ссылка + * @returns true, если ссылка не ведёт за пределы сайта + */ +export function isLinkLocal(link: string): boolean { + let url: URL; + try { + url = new URL(link); + } catch { + return true; + } + + // Поддомены teasanctuary.ru должны всегда быть "внешними" + return url.hostname === "" || url.hostname === "teasanctuary.ru"; } \ No newline at end of file