From 0bcbc83cb409d0df1993dd0cdb67f3e9f6ee11dd Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Tue, 12 May 2026 20:32:02 +0300 Subject: [PATCH] Fix splatnet room url detection logic --- app/features/chat/chat-constants.test.ts | 8 ++++++++ app/features/chat/chat-constants.ts | 11 +++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/features/chat/chat-constants.test.ts b/app/features/chat/chat-constants.test.ts index 7c5b87349..35dbd414d 100644 --- a/app/features/chat/chat-constants.test.ts +++ b/app/features/chat/chat-constants.test.ts @@ -7,6 +7,14 @@ import { describe("isSplatnetRoomUrl", () => { test("accepts canonical SplatNet share path", () => { + expect( + isSplatnetRoomUrl( + "https://s.nintendo.com/av5ja-lp1/znca/game/4834290508791808?p=%2Froom_creator%2Finvitation%2F1f14e24b-3c9e-6352-8a80-b7993ffad0d0", + ), + ).toBe(true); + }); + + test("accepts canonical SplatNet share path (no query params)", () => { expect(isSplatnetRoomUrl("https://s.nintendo.com/av5ja-lp1/abc123")).toBe( true, ); diff --git a/app/features/chat/chat-constants.ts b/app/features/chat/chat-constants.ts index 93b0974d1..35bc97f14 100644 --- a/app/features/chat/chat-constants.ts +++ b/app/features/chat/chat-constants.ts @@ -13,9 +13,9 @@ export function isSplatnetRoomUrl(url: string): boolean { parsed.username === "" && parsed.password === "" && parsed.port === "" && - parsed.search === "" && parsed.hash === "" && - SPLATNET_ROOM_PATH_PATTERN.test(parsed.pathname) + SPLATNET_ROOM_PATH_PATTERN.test(parsed.pathname) && + isAllowedSplatnetSearch(parsed.searchParams) ); } @@ -42,3 +42,10 @@ export function isMatchRoomUrl(url: string) { const pathname = URL.canParse(url) ? new URL(url).pathname : url; return MATCH_ROOM_URL_PATTERN.test(pathname); } + +function isAllowedSplatnetSearch(params: URLSearchParams): boolean { + if (params.size === 0) return true; + if (params.size > 1) return false; + const p = params.get("p"); + return p !== null && SPLATNET_ROOM_PATH_PATTERN.test(p); +}