diff --git a/packages/svelte-query/src/createBaseQuery.ts b/packages/svelte-query/src/createBaseQuery.ts index a14322e32d..374c727e19 100644 --- a/packages/svelte-query/src/createBaseQuery.ts +++ b/packages/svelte-query/src/createBaseQuery.ts @@ -22,17 +22,20 @@ export function createBaseQuery< Observer: typeof QueryObserver, queryClient?: QueryClient, ): CreateBaseQueryResult { + /** Load query client */ const client = useQueryClient(queryClient) + /** Converts options to a svelte store if not already a store object */ const optionsStore = isSvelteStore(options) ? options : readable(options) - const defaultedOptionsStore = derived(optionsStore, ($options) => { - const defaultedOptions = client.defaultQueryOptions($options) + /** Creates a store that has the default options applied */ + const defaultedOptionsStore = derived(optionsStore, ($optionsStore) => { + const defaultedOptions = client.defaultQueryOptions($optionsStore) defaultedOptions._optimisticResults = 'optimistic' - return defaultedOptions }) + /** Creates the observer */ const observer = new Observer< TQueryFnData, TError, @@ -51,12 +54,16 @@ export function createBaseQuery< return observer.subscribe(notifyManager.batchCalls(set)) }) - const { subscribe } = derived(result, ($result) => { - $result = observer.getOptimisticResult(get(defaultedOptionsStore)) - return !get(defaultedOptionsStore).notifyOnChangeProps - ? observer.trackResult($result) - : $result - }) + /** Subscribe to changes in result and defaultedOptionsStore */ + const { subscribe } = derived( + [result, defaultedOptionsStore], + ([$result, $defaultedOptionsStore]) => { + $result = observer.getOptimisticResult($defaultedOptionsStore) + return !$defaultedOptionsStore.notifyOnChangeProps + ? observer.trackResult($result) + : $result + }, + ) return { subscribe } }