dify/web/app/components/workflow/nodes/trigger-schedule/use-config.ts
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

133 lines
3.2 KiB
TypeScript

import type { ScheduleFrequency, ScheduleMode, ScheduleTriggerNodeType } from './types'
import { useQuery } from '@tanstack/react-query'
import { useCallback, useMemo } from 'react'
import { useNodesReadOnly } from '@/app/components/workflow/hooks'
import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-crud'
import { userProfileQueryOptions } from '@/features/account-profile/client'
import { getDefaultVisualConfig } from './constants'
const useConfig = (id: string, payload: ScheduleTriggerNodeType) => {
const { nodesReadOnly: readOnly } = useNodesReadOnly()
const { data: timezone } = useQuery({
...userProfileQueryOptions(),
select: (data) => data.profile.timezone ?? undefined,
})
const frontendPayload = useMemo(() => {
return {
...payload,
mode: payload.mode || 'visual',
frequency: payload.frequency || 'daily',
timezone: payload.timezone || timezone || 'UTC',
visual_config: {
...getDefaultVisualConfig(),
...payload.visual_config,
},
}
}, [payload, timezone])
const { inputs, setInputs } = useNodeCrud<ScheduleTriggerNodeType>(id, frontendPayload)
const handleModeChange = useCallback(
(mode: ScheduleMode) => {
const newInputs = {
...inputs,
mode,
}
setInputs(newInputs)
},
[inputs, setInputs],
)
const handleFrequencyChange = useCallback(
(frequency: ScheduleFrequency) => {
const newInputs = {
...inputs,
frequency,
visual_config: {
...inputs.visual_config,
...(frequency === 'hourly' && {
on_minute: inputs.visual_config?.on_minute ?? 0,
}),
},
cron_expression: undefined,
}
setInputs(newInputs)
},
[inputs, setInputs],
)
const handleCronExpressionChange = useCallback(
(value: string) => {
const newInputs = {
...inputs,
cron_expression: value,
frequency: undefined,
visual_config: undefined,
}
setInputs(newInputs)
},
[inputs, setInputs],
)
const handleWeekdaysChange = useCallback(
(weekdays: string[]) => {
const newInputs = {
...inputs,
visual_config: {
...inputs.visual_config,
weekdays,
},
cron_expression: undefined,
}
setInputs(newInputs)
},
[inputs, setInputs],
)
const handleTimeChange = useCallback(
(time: string) => {
const newInputs = {
...inputs,
visual_config: {
...inputs.visual_config,
time,
},
cron_expression: undefined,
}
setInputs(newInputs)
},
[inputs, setInputs],
)
const handleOnMinuteChange = useCallback(
(on_minute: number) => {
const newInputs = {
...inputs,
visual_config: {
...inputs.visual_config,
on_minute,
},
cron_expression: undefined,
}
setInputs(newInputs)
},
[inputs, setInputs],
)
return {
readOnly,
inputs,
setInputs,
handleModeChange,
handleFrequencyChange,
handleCronExpressionChange,
handleWeekdaysChange,
handleTimeChange,
handleOnMinuteChange,
}
}
export default useConfig