From a69b0904cec66bb62c20dc763a87ba9e19644ba3 Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Mon, 29 Dec 2025 17:40:45 +0200 Subject: [PATCH] Fix SQ preview showing groups not actually looking --- app/features/sendouq/core/SendouQ.server.ts | 43 ++++++++++++++----- .../sendouq/loaders/q.looking.server.ts | 7 +-- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/app/features/sendouq/core/SendouQ.server.ts b/app/features/sendouq/core/SendouQ.server.ts index 4c650a796..1fff2a97b 100644 --- a/app/features/sendouq/core/SendouQ.server.ts +++ b/app/features/sendouq/core/SendouQ.server.ts @@ -239,6 +239,7 @@ class SendouQClass { ) { const usersTier = this.#getUserTier(userId); return this.groups + .filter((group) => this.#isSuitableLookingGroup({ group })) .map(this.#getAddMemberPrivateNoteMapper(notes)) .sort(this.#getSkillAndNoteSortComparator(usersTier)) .map((group) => this.#addPreviewTierRange(group)) @@ -269,18 +270,14 @@ class SendouQClass { ? [1, 2] : [1, 2, 3]; - const staleThreshold = sub(new Date(), { seconds: SECONDS_TILL_STALE }); return this.groups - .filter((group) => { - const groupLastAction = databaseTimestampToDate(group.latestActionAt); - return ( - group.status === "ACTIVE" && - !group.matchId && - group.id !== ownGroup.id && - currentMemberCountOptions.includes(group.members.length) && - groupLastAction >= staleThreshold - ); - }) + .filter((group) => + this.#isSuitableLookingGroup({ + group, + ownGroupId: ownGroup.id, + currentMemberCountOptions, + }), + ) .map(this.#getGroupReplayMapper(userId)) .map(this.#getAddTierRangeMapper(ownGroup.tier)) .map(this.#getAddMemberPrivateNoteMapper(notes)) @@ -538,6 +535,30 @@ class SendouQClass { ) ?? { isPlus: false, name: "IRON" } ); } + + #isSuitableLookingGroup({ + group, + ownGroupId, + currentMemberCountOptions, + }: { + group: SendouQClass["groups"][number]; + ownGroupId?: number; + currentMemberCountOptions?: number[]; + }) { + if (group.status !== "ACTIVE") return false; + if (group.matchId) return false; + if (group.id === ownGroupId) return false; + if ( + currentMemberCountOptions && + !currentMemberCountOptions.includes(group.members.length) + ) { + return false; + } + + const staleThreshold = sub(new Date(), { seconds: SECONDS_TILL_STALE }); + const groupLastAction = databaseTimestampToDate(group.latestActionAt); + return groupLastAction >= staleThreshold; + } } const groups = await SQGroupRepository.findCurrentGroups(); diff --git a/app/features/sendouq/loaders/q.looking.server.ts b/app/features/sendouq/loaders/q.looking.server.ts index 2d1d6b633..e77720943 100644 --- a/app/features/sendouq/loaders/q.looking.server.ts +++ b/app/features/sendouq/loaders/q.looking.server.ts @@ -19,10 +19,11 @@ export const loader = async ({ request }: LoaderFunctionArgs) => { SendouQ.usersInQueue, ); - const groups = isPreview - ? SendouQ.previewGroups(user.id, privateNotes) - : SendouQ.lookingGroups(user.id, privateNotes); const ownGroup = SendouQ.findOwnGroup(user.id); + const groups = + isPreview && !ownGroup + ? SendouQ.previewGroups(user.id, privateNotes) + : SendouQ.lookingGroups(user.id, privateNotes); if (!isPreview) { sqRedirectIfNeeded({