'use client' import type { FC } from 'react' import React, { useCallback, useMemo } from 'react' import { AUTO_UPDATE_MODE, AUTO_UPDATE_STRATEGY, type AutoUpdateConfig } from './types' import Label from '../label' import StrategyPicker from './strategy-picker' import { useTranslation } from 'react-i18next' import TimePicker from '@/app/components/base/date-and-time-picker/time-picker' import OptionCard from '@/app/components/workflow/nodes/_base/components/option-card' import PluginsPicker from './plugins-picker' import { dayjsToTimeOfDay, timeOfDayToDayjs } from './utils' const i18nPrefix = 'plugin.autoUpdate' type Props = { payload: AutoUpdateConfig onChange: (payload: AutoUpdateConfig) => void } const AutoUpdateSetting: FC = ({ payload, onChange, }) => { const { t } = useTranslation() const { strategy_setting, upgrade_time_of_day, upgrade_mode, exclude_plugins, include_plugins, } = payload const minuteFilter = useCallback((minutes: string[]) => { return minutes.filter((m) => { const time = Number.parseInt(m, 10) return time % 15 === 0 }) }, []) const strategyDescription = useMemo(() => { switch (strategy_setting) { case AUTO_UPDATE_STRATEGY.fixOnly: return t(`${i18nPrefix}.strategy.fixOnly.selectedDescription`) case AUTO_UPDATE_STRATEGY.latest: return t(`${i18nPrefix}.strategy.latest.selectedDescription`) default: return '' } }, [strategy_setting, t]) const plugins = useMemo(() => { switch (upgrade_mode) { case AUTO_UPDATE_MODE.partial: return include_plugins case AUTO_UPDATE_MODE.exclude: return exclude_plugins default: return [] } }, [upgrade_mode, exclude_plugins, include_plugins]) const handlePluginsChange = useCallback((newPlugins: string[]) => { if (upgrade_mode === AUTO_UPDATE_MODE.partial) { onChange({ ...payload, include_plugins: newPlugins, }) } else if (upgrade_mode === AUTO_UPDATE_MODE.exclude) { onChange({ ...payload, exclude_plugins: newPlugins, }) } }, [payload, upgrade_mode, onChange]) const handleChange = useCallback((key: keyof AutoUpdateConfig) => { return (value: AutoUpdateConfig[keyof AutoUpdateConfig]) => { onChange({ ...payload, [key]: value, }) } }, [payload, onChange]) return (
Updates Settings
{strategy_setting !== AUTO_UPDATE_STRATEGY.disabled && ( <>
)}
) } export default React.memo(AutoUpdateSetting)