88    type  CreateMutationOptions , 
99    type  CreateInfiniteQueryOptions , 
1010    type  InfiniteData , 
11-     CreateInfiniteQueryResult , 
12-     QueryKey , 
1311}  from  '@tanstack/angular-query-v5' ; 
1412import  type  {  ModelMeta  }  from  '@zenstackhq/runtime/cross' ; 
1513import  {  inject ,  InjectionToken  }  from  '@angular/core' ; 
@@ -29,6 +27,9 @@ import {
2927
3028export  {  APIContext  as  RequestHandlerContext  }  from  '../runtime/common' ; 
3129
30+ type  AnyFn  =  ( ...a : unknown [ ] )  =>  unknown ; 
31+ const  isFn  =  ( v : unknown ) : v  is AnyFn  =>  typeof  v  ===  'function' ; 
32+ 
3233export  const  AngularQueryContextKey  =  new  InjectionToken < APIContext > ( 'zenstack-angular-query-context' ) ; 
3334
3435/** 
@@ -74,19 +75,21 @@ export function useModelQuery<TQueryFnData, TData, TError>(
7475    options ?: Omit < CreateQueryOptions < TQueryFnData ,  TError ,  TData > ,  'queryKey' >  &  ExtraQueryOptions , 
7576    fetch ?: FetchFn 
7677)  { 
77-     const  reqUrl  =  makeUrl ( url ,  args ) ; 
78-     const  queryKey  =  getQueryKey ( model ,  url ,  args ,  { 
79-         infinite : false , 
80-         optimisticUpdate : options ?. optimisticUpdate  !==  false , 
81-     } ) ; 
82-     return  { 
83-         queryKey, 
84-         ...injectQuery ( ( )  =>  ( { 
78+     const  query  =  injectQuery ( ( )  =>  { 
79+         const  resolvedArgs  =  isFn ( args )  ? args ( )  : args ; 
80+ 
81+         const  reqUrl  =  makeUrl ( url ,  resolvedArgs ) ; 
82+         const  queryKey  =  getQueryKey ( model ,  url ,  resolvedArgs ,  { 
83+             infinite : false , 
84+             optimisticUpdate : options ?. optimisticUpdate  !==  false , 
85+         } ) ; 
86+         return  { 
8587            queryKey, 
8688            queryFn : ( {  signal } )  =>  fetcher < TQueryFnData ,  false > ( reqUrl ,  {  signal } ,  fetch ,  false ) , 
8789            ...options , 
88-         } ) ) , 
89-     } ; 
90+         } ; 
91+     } ) ; 
92+     return  query ; 
9093} 
9194
9295/** 
@@ -108,19 +111,22 @@ export function useInfiniteModelQuery<TQueryFnData, TData, TError>(
108111        'queryKey'  |  'initialPageParam' 
109112    > , 
110113    fetch ?: FetchFn 
111- ) : CreateInfiniteQueryResult < InfiniteData < TData > ,  TError >  &  {  queryKey : QueryKey  }  { 
112-     const  queryKey  =  getQueryKey ( model ,  url ,  args ,  {  infinite : true ,  optimisticUpdate : false  } ) ; 
113-     return  { 
114-         queryKey, 
115-         ...injectInfiniteQuery ( ( )  =>  ( { 
114+ )  { 
115+     const  query  =  injectInfiniteQuery ( ( )  =>  { 
116+         const  resolvedArgs  =  isFn ( args )  ? args ( )  : args ; 
117+ 
118+         const  queryKey  =  getQueryKey ( model ,  url ,  resolvedArgs ,  {  infinite : true ,  optimisticUpdate : false  } ) ; 
119+ 
120+         return  { 
116121            queryKey, 
117122            queryFn : ( {  pageParam,  signal } )  =>  { 
118-                 return  fetcher < TQueryFnData ,  false > ( makeUrl ( url ,  pageParam  ??  args ) ,  {  signal } ,  fetch ,  false ) ; 
123+                 return  fetcher < TQueryFnData ,  false > ( makeUrl ( url ,  pageParam  ??  resolvedArgs ) ,  {  signal } ,  fetch ,  false ) ; 
119124            } , 
120-             initialPageParam : args , 
125+             initialPageParam : resolvedArgs , 
121126            ...options , 
122-         } ) ) , 
123-     } ; 
127+         } ; 
128+     } ) ; 
129+     return  query ; 
124130} 
125131
126132/** 
0 commit comments