From 933fa40805329c4a32af695c53871c8e12dde268 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 | 8 ++++---- src/utils/__tests__/extractURLs.test.ts | 11 +++++++++++ src/utils/links.ts | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/service/vk/handlers/PostNewHandler.ts b/src/service/vk/handlers/PostNewHandler.ts index a5f5daa..b45455d 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>) { @@ -152,10 +153,8 @@ export class PostNewHandler extends VkEventHandler { return; } - const rows = await Promise.all( - buttons.map((button) => - this.extrasGenerators[button](text, eventId, postId) - ) + const rows = buttons.map((button) => + this.extrasGenerators[button](text, eventId, postId) ); const inline_keyboard = rows.filter( @@ -193,6 +192,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));