'use client' import produce from 'immer' import React, { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import type { OnFeaturesChange } from '../../types' import { useFeatures, useFeaturesStore, } from '../../hooks' import RadioGroup from './radio-group' import { TransferMethod } from '@/types/app' import ParamItem from '@/app/components/base/param-item' const MIN = 1 const MAX = 6 type ParamConfigContentProps = { onChange?: OnFeaturesChange } const ParamConfigContent = ({ onChange, }: ParamConfigContentProps) => { const { t } = useTranslation() const featuresStore = useFeaturesStore() const file = useFeatures(s => s.features.file) const transferMethod = useMemo(() => { if (!file?.image?.transfer_methods || file?.image.transfer_methods.length === 2) return TransferMethod.all return file.image.transfer_methods[0] }, [file?.image?.transfer_methods]) const handleTransferMethodsChange = useCallback((value: TransferMethod) => { const { features, setFeatures, } = featuresStore!.getState() const newFeatures = produce(features, (draft) => { if (draft.file?.image) { if (value === TransferMethod.all) draft.file.image.transfer_methods = [TransferMethod.remote_url, TransferMethod.local_file] else draft.file.image.transfer_methods = [value] } }) setFeatures(newFeatures) if (onChange) onChange(newFeatures) }, [featuresStore, onChange]) const handleLimitsChange = useCallback((_key: string, value: number) => { if (!value) return const { features, setFeatures, } = featuresStore!.getState() const newFeatures = produce(features, (draft) => { if (draft.file?.image) draft.file.image.number_limits = value }) setFeatures(newFeatures) if (onChange) onChange(newFeatures) }, [featuresStore, onChange]) return (