From 55d864462600d681de5526e7b1cdea080ed7993d Mon Sep 17 00:00:00 2001 From: Anatoly Date: Mon, 7 Nov 2022 12:18:23 +0300 Subject: [PATCH] fix(vue-query): useQueries options allow empty array and setup queryClient --- packages/vue-query/src/useQueries.ts | 41 ++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/packages/vue-query/src/useQueries.ts b/packages/vue-query/src/useQueries.ts index 6879bcd2cb..0b7c5f5a9c 100644 --- a/packages/vue-query/src/useQueries.ts +++ b/packages/vue-query/src/useQueries.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { QueriesObserver } from '@tanstack/query-core' +import type { QueryClient } from '@tanstack/query-core' import { onScopeDispose, reactive, readonly, watch } from 'vue-demi' import type { Ref } from 'vue-demi' @@ -125,15 +126,45 @@ export type UseQueriesResults< type UseQueriesOptionsArg = readonly [...UseQueriesOptions] +export type UseQueriesItem = Omit< + UseQueriesOptionsArg, + 'queryClient' | 'queryClientKey' +> + +type DefaultUseQueriesOptions = { + queries: Ref> | UseQueriesItem +} + +interface UseQueriesOptionsWithQueryClient + extends DefaultUseQueriesOptions { + queryClient?: QueryClient +} +interface UseQueriesOptionsWithQueryClientKey + extends DefaultUseQueriesOptions { + queryClientKey?: string +} + +export function useQueries( + options: UseQueriesOptionsWithQueryClient, +): Readonly> +export function useQueries( + options: UseQueriesOptionsWithQueryClientKey, +): Readonly> export function useQueries({ queries, -}: { - queries: Ref> | UseQueriesOptionsArg -}): Readonly> { + ...queriesOptions +}: + | UseQueriesOptionsWithQueryClientKey + | UseQueriesOptionsWithQueryClient): Readonly> { const unreffedQueries = cloneDeepUnref(queries) as UseQueriesOptionsArg - const queryClientKey = unreffedQueries[0].queryClientKey - const optionsQueryClient = unreffedQueries[0].queryClient + const optionsQueryClient = + 'queryClient' in queriesOptions ? queriesOptions.queryClient : undefined + const queryClientKey = + 'queryClientKey' in queriesOptions + ? queriesOptions.queryClientKey + : undefined + const queryClient = optionsQueryClient ?? useQueryClient(queryClientKey) const defaultedQueries = unreffedQueries.map((options) => { return queryClient.defaultQueryOptions(options)