| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | 
							- '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 (
 
-     <div>
 
-       <div>
 
-         <div className='leading-6 text-base font-semibold text-gray-800'>{t('common.operation.settings')}</div>
 
-         <div className='pt-3 space-y-6'>
 
-           <div>
 
-             <div className='mb-2 leading-[18px] text-[13px] font-semibold text-gray-800'>{t('appDebug.vision.visionSettings.uploadMethod')}</div>
 
-             <RadioGroup
 
-               className='space-x-3'
 
-               options={[
 
-                 {
 
-                   label: t('appDebug.vision.visionSettings.both'),
 
-                   value: TransferMethod.all,
 
-                 },
 
-                 {
 
-                   label: t('appDebug.vision.visionSettings.localUpload'),
 
-                   value: TransferMethod.local_file,
 
-                 },
 
-                 {
 
-                   label: t('appDebug.vision.visionSettings.url'),
 
-                   value: TransferMethod.remote_url,
 
-                 },
 
-               ]}
 
-               value={transferMethod}
 
-               onChange={handleTransferMethodsChange}
 
-             />
 
-           </div>
 
-           <div>
 
-             <ParamItem
 
-               id='upload_limit'
 
-               className=''
 
-               name={t('appDebug.vision.visionSettings.uploadLimit')}
 
-               noTooltip
 
-               {...{
 
-                 default: 2,
 
-                 step: 1,
 
-                 min: MIN,
 
-                 max: MAX,
 
-               }}
 
-               value={file?.image?.number_limits || 3}
 
-               enable={true}
 
-               onChange={handleLimitsChange}
 
-             />
 
-           </div>
 
-         </div>
 
-       </div>
 
-     </div>
 
-   )
 
- }
 
- export default React.memo(ParamConfigContent)
 
 
  |