@@ -29,6 +29,7 @@ import type {
2929 useTaskRunRunning as useTaskRunRunningDecl ,
3030} from '../@types/ui-react/index.d.ts' ;
3131import { arrayIsEqual } from '../common/array.ts' ;
32+ import { isObject } from '../common/obj.ts' ;
3233import { isUndefined } from '../common/other.ts' ;
3334import { Context } from './context.ts' ;
3435
@@ -79,6 +80,28 @@ const addAndDelListener = (thing: any, listenable: string, ...args: any[]) => {
7980 return ( ) => thing ?. delListener ?.( listenerId ) ;
8081} ;
8182
83+ const useScheduleTaskRunImpl = (
84+ args : [ taskId : Id , arg ?: string , startAfter ?: TimestampMs | DurationMs ] ,
85+ config ?: TaskRunConfig ,
86+ configDeps : DependencyList = EMPTY_ARRAY ,
87+ ) => {
88+ const callback = useScheduleTaskRunCallbackImpl ( args , config , configDeps ) ;
89+ return useMemo ( callback , [ callback ] ) ;
90+ } ;
91+
92+ const useScheduleTaskRunCallbackImpl = (
93+ args : [ taskId : Id , arg ?: string , startAfter ?: TimestampMs | DurationMs ] ,
94+ config ?: TaskRunConfig ,
95+ configDeps : DependencyList = EMPTY_ARRAY ,
96+ ) => {
97+ const manager = useManager ( ) ;
98+ return useCallback (
99+ ( ) => manager ?. scheduleTaskRun ( ...args , config ) ,
100+ // eslint-disable-next-line react-hooks/exhaustive-deps
101+ [ manager , ...args , ...configDeps ] ,
102+ ) ;
103+ } ;
104+
82105export const useCreateManager : typeof useCreateManagerDecl = (
83106 create : ( ) => Manager ,
84107 createDeps : DependencyList = EMPTY_ARRAY ,
@@ -134,34 +157,50 @@ export const useSetTask: typeof useSetTaskDecl = (
134157} ;
135158
136159export const useScheduleTaskRun : typeof useScheduleTaskRunDecl = (
137- taskId : Id ,
138- arg ?: string ,
160+ taskIdOrArgs :
161+ | Id
162+ | {
163+ taskId ?: Id ;
164+ arg ?: string ;
165+ startAfter ?: TimestampMs | DurationMs ;
166+ config ?: TaskRunConfig ;
167+ } ,
168+ argOrConfigDeps ?: string | DependencyList ,
139169 startAfter ?: TimestampMs | DurationMs ,
140170 config ?: TaskRunConfig ,
141- configDeps : DependencyList = EMPTY_ARRAY ,
142- ) => {
143- const callback = useScheduleTaskRunCallback (
144- taskId ,
145- arg ,
146- startAfter ,
147- config ,
148- configDeps ,
171+ configDeps ?: DependencyList ,
172+ ) =>
173+ ( useScheduleTaskRunImpl as any ) (
174+ ...( isObject ( taskIdOrArgs )
175+ ? [
176+ [ taskIdOrArgs . taskId , taskIdOrArgs . arg , taskIdOrArgs . startAfter ] ,
177+ taskIdOrArgs . config ,
178+ argOrConfigDeps ,
179+ ]
180+ : [ [ taskIdOrArgs , argOrConfigDeps , startAfter ] , config , configDeps ] ) ,
149181 ) ;
150- return useMemo ( callback , [ callback ] ) ;
151- } ;
152182
153183export const useScheduleTaskRunCallback : typeof useScheduleTaskRunCallbackDecl =
154184 (
155- taskId : Id ,
156- arg ?: string ,
185+ taskIdOrArgs :
186+ | Id
187+ | {
188+ taskId ?: Id ;
189+ arg ?: string ;
190+ startAfter ?: TimestampMs | DurationMs ;
191+ config ?: TaskRunConfig ;
192+ } ,
193+ argOrConfigDeps ?: string | DependencyList ,
157194 startAfter ?: TimestampMs | DurationMs ,
158195 config ?: TaskRunConfig ,
159- configDeps : DependencyList = EMPTY_ARRAY ,
160- ) => {
161- const manager = useManager ( ) ;
162- return useCallback (
163- ( ) => manager ?. scheduleTaskRun ( taskId , arg , startAfter , config ) ,
164- // eslint-disable-next-line react-hooks/exhaustive-deps
165- [ manager , taskId , arg , startAfter , ...configDeps ] ,
196+ configDeps ?: DependencyList ,
197+ ) =>
198+ ( useScheduleTaskRunCallbackImpl as any ) (
199+ ...( isObject ( taskIdOrArgs )
200+ ? [
201+ [ taskIdOrArgs . taskId , taskIdOrArgs . arg , taskIdOrArgs . startAfter ] ,
202+ taskIdOrArgs . config ,
203+ argOrConfigDeps ,
204+ ]
205+ : [ [ taskIdOrArgs , argOrConfigDeps , startAfter ] , config , configDeps ] ) ,
166206 ) ;
167- } ;
0 commit comments