From 237f9c9ca8855b3bc1df176b7a2cc642df5562c2 Mon Sep 17 00:00:00 2001 From: Dylan Audius Date: Mon, 18 May 2026 16:02:23 -0700 Subject: [PATCH] fix(contests): prime correct count cache key in useUserRemixContests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The profile Contests tab primed `getRemixesQueryKey({ pageSize: 0, isContestEntry: true })`, but `ContestCard` reads from `useRemixesCount`, which is keyed by `getRemixesCountQueryKey`. The mismatch meant primed counts were never read — every card fell through to its own `/tracks/{id}/remixes?limit=0` request, with the badge showing "0 ENTRIES" until that fetch resolved. This mirrors the fix already applied to `useAllRemixContests` in the time. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../tan-query/events/useUserRemixContests.ts | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/packages/common/src/api/tan-query/events/useUserRemixContests.ts b/packages/common/src/api/tan-query/events/useUserRemixContests.ts index 8e210b87492..39fa0b67985 100644 --- a/packages/common/src/api/tan-query/events/useUserRemixContests.ts +++ b/packages/common/src/api/tan-query/events/useUserRemixContests.ts @@ -9,7 +9,7 @@ import { import { useInfiniteQuery, useQueryClient } from '@tanstack/react-query' import { eventMetadataFromSDK } from '~/adapters/event' -import { getRemixesQueryKey } from '~/api/tan-query/remixes/useRemixes' +import { getRemixesCountQueryKey } from '~/api/tan-query/remixes/useRemixes' import { useQueryContext } from '~/api/tan-query/utils' import { primeRelatedData } from '~/api/tan-query/utils/primeRelatedData' import { ID } from '~/models' @@ -97,23 +97,15 @@ export const useUserRemixContests = ( // N+1. primeRelatedData({ related, queryClient }) - // Prime useRemixes({ trackId, pageSize: 0, isContestEntry: true }) so - // ContestCard's entry-count badge doesn't fire a count-only request - // per card. Mirrors the priming in useAllRemixContests. + // Prime the dedicated `useRemixesCount` cache so ContestCard's + // entry-count badge doesn't fire a count-only request per card. const entryCounts = related?.entryCounts ?? {} for (const [hashedTrackId, count] of Object.entries(entryCounts)) { const trackId = OptionalHashId.parse(hashedTrackId) if (!trackId) continue queryClient.setQueryData( - getRemixesQueryKey({ - trackId, - pageSize: 0, - isContestEntry: true - }), - { - pages: [{ count, tracks: [] }], - pageParams: [0] - } as unknown as never + getRemixesCountQueryKey({ trackId, isContestEntry: true }), + count ) }