From 34f89fa75e41d7e36fbc7e7d1575519812a1e089 Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Mon, 3 Mar 2025 14:45:55 +0700 Subject: [PATCH] fix link handler and too much buttons --- src/service/vk/handlers/PostNewHandler.ts | 2 ++ src/utils/__tests__/extractURLs.test.ts | 11 +++++++++++ src/utils/links.ts | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/service/vk/handlers/PostNewHandler.ts b/src/service/vk/handlers/PostNewHandler.ts index a5f5daa..a4ec66e 100644 --- a/src/service/vk/handlers/PostNewHandler.ts +++ b/src/service/vk/handlers/PostNewHandler.ts @@ -47,6 +47,7 @@ type LikeCtx = Composer.Context & { match: string[] }; const PHOTO_CAPTION_LIMIT = 1000; const POST_TEXT_LIMIT = 4096; +const URL_BUTTON_LIMIT = 4; export class PostNewHandler extends VkEventHandler { constructor(...props: ConstructorParameters>) { @@ -193,6 +194,7 @@ export class PostNewHandler extends VkEventHandler { return label ? { text: links[label], url: url.toString() } : undefined; }) + .slice(0, URL_BUTTON_LIMIT) .filter((el) => el) as InlineKeyboardButton[]; }; diff --git a/src/utils/__tests__/extractURLs.test.ts b/src/utils/__tests__/extractURLs.test.ts index 1d78e2e..f4cc611 100644 --- a/src/utils/__tests__/extractURLs.test.ts +++ b/src/utils/__tests__/extractURLs.test.ts @@ -52,4 +52,15 @@ describe("extractURLs", () => { "https://map.vault48.org/test5", ]); }); + + it("skipps link description", () => { + const result = extractURLs( + `Trying out links: [#alias|map.vault48.org/test3|https://map.vault48.org/test] https://map.vault48.org/test2` + ).map((it) => it.href); + + expect(result).toEqual([ + "https://map.vault48.org/test", + "https://map.vault48.org/test2", + ]); + }); }); diff --git a/src/utils/links.ts b/src/utils/links.ts index e6ea985..6441a5d 100644 --- a/src/utils/links.ts +++ b/src/utils/links.ts @@ -15,7 +15,7 @@ export const extractURLs = (text: string): URL[] => { text .match(weirdLongUrlRegex) ?.forEach((match) => - urls.add(fixUrl(match.replace(weirdLongUrlRegex, "$2"))) + urls.add(fixUrl(match.replace(weirdLongUrlRegex, "$3"))) ); text.match(simpleUrlRegex)?.forEach((match) => urls.add(match));