diff --git a/lib/query/query-keys.ts b/lib/query/query-keys.ts index f9c76024..14d8872b 100644 --- a/lib/query/query-keys.ts +++ b/lib/query/query-keys.ts @@ -1,16 +1,52 @@ -import { useBountyQuery, type BountyQueryInput } from "@/lib/graphql/generated"; +import { + useBountiesQuery, + useBountyQuery, + useActiveBountiesQuery, + useOrganizationBountiesQuery, + useProjectBountiesQuery, + type BountyQueryInput, + type BountiesQueryVariables, + type BountyQueryVariables, + type ActiveBountiesQueryVariables, + type OrganizationBountiesQueryVariables, + type ProjectBountiesQueryVariables, +} from "@/lib/graphql/generated"; /** * Query Key Factory for Bounties + * Uses codegen-generated query keys with proper variable wrapping */ export const bountyKeys = { - all: ["Bounties"] as const, - lists: () => [...bountyKeys.all, "lists"] as const, + // All bounties list queries - uses ["Bounties"] or ["Bounties", variables] + lists: () => useBountiesQuery.getKey(), list: (params?: BountyQueryInput) => - [...bountyKeys.lists(), { query: params }] as const, + useBountiesQuery.getKey({ query: params } as BountiesQueryVariables), + + // Infinite bounties queries - uses same base key as list since they fetch same data infinite: (params?: Omit) => - [...bountyKeys.lists(), "infinite", { query: params }] as const, - detail: (id: string) => useBountyQuery.getKey({ id }), + [ + ...useBountiesQuery.getKey({ query: params } as BountiesQueryVariables), + "infinite", + ] as const, + + // Single bounty detail - uses ["Bounty", variables] + detail: (id: string) => useBountyQuery.getKey({ id } as BountyQueryVariables), + + // Active bounties - uses ["ActiveBounties"] or ["ActiveBounties", variables] + active: (variables?: ActiveBountiesQueryVariables) => + useActiveBountiesQuery.getKey(variables), + + // Organization bounties - uses ["OrganizationBounties", variables] + organization: (organizationId: string) => + useOrganizationBountiesQuery.getKey({ + organizationId, + } as OrganizationBountiesQueryVariables), + + // Project bounties - uses ["ProjectBounties", variables] + project: (projectId: string) => + useProjectBountiesQuery.getKey({ + projectId, + } as ProjectBountiesQueryVariables), }; // Type helpers for query keys