balibabu
feat: If the tts model is not set, the Text to Speech switch is not allowed to be turned on #1877 (#2446)
e536bf7
import { PlusOutlined } from '@ant-design/icons'; | |
import { Form, Input, message, Select, Switch, Upload } from 'antd'; | |
import classNames from 'classnames'; | |
import { ISegmentedContentProps } from '../interface'; | |
import KnowledgeBaseItem from '@/components/knowledge-base-item'; | |
import { useTranslate } from '@/hooks/common-hooks'; | |
import { useFetchTenantInfo } from '@/hooks/user-setting-hooks'; | |
import { useCallback } from 'react'; | |
import styles from './index.less'; | |
const AssistantSetting = ({ show, form }: ISegmentedContentProps) => { | |
const { t } = useTranslate('chat'); | |
const { data } = useFetchTenantInfo(); | |
const normFile = (e: any) => { | |
if (Array.isArray(e)) { | |
return e; | |
} | |
return e?.fileList; | |
}; | |
const handleTtsChange = useCallback( | |
(checked: boolean) => { | |
if (checked && !data.tts_id) { | |
message.error(`Please set TTS model firstly. | |
Setting >> Model Providers >> System model settings`); | |
form.setFieldValue(['prompt_config', 'tts'], false); | |
} | |
}, | |
[data, form], | |
); | |
const uploadButtion = ( | |
<button style={{ border: 0, background: 'none' }} type="button"> | |
<PlusOutlined /> | |
<div style={{ marginTop: 8 }}>{t('upload', { keyPrefix: 'common' })}</div> | |
</button> | |
); | |
return ( | |
<section | |
className={classNames({ | |
[styles.segmentedHidden]: !show, | |
})} | |
> | |
<Form.Item | |
name={'name'} | |
label={t('assistantName')} | |
rules={[{ required: true, message: t('assistantNameMessage') }]} | |
> | |
<Input placeholder={t('namePlaceholder')} /> | |
</Form.Item> | |
<Form.Item | |
name="icon" | |
label={t('assistantAvatar')} | |
valuePropName="fileList" | |
getValueFromEvent={normFile} | |
> | |
<Upload | |
listType="picture-card" | |
maxCount={1} | |
beforeUpload={() => false} | |
showUploadList={{ showPreviewIcon: false, showRemoveIcon: false }} | |
> | |
{show ? uploadButtion : null} | |
</Upload> | |
</Form.Item> | |
<Form.Item | |
name={'language'} | |
label={t('language')} | |
initialValue={'English'} | |
tooltip="coming soon" | |
style={{ display: 'none' }} | |
> | |
<Select | |
options={[ | |
{ value: 'Chinese', label: t('chinese', { keyPrefix: 'common' }) }, | |
{ value: 'English', label: t('english', { keyPrefix: 'common' }) }, | |
]} | |
/> | |
</Form.Item> | |
<Form.Item | |
name={['prompt_config', 'empty_response']} | |
label={t('emptyResponse')} | |
tooltip={t('emptyResponseTip')} | |
> | |
<Input placeholder="" /> | |
</Form.Item> | |
<Form.Item | |
name={['prompt_config', 'prologue']} | |
label={t('setAnOpener')} | |
tooltip={t('setAnOpenerTip')} | |
initialValue={t('setAnOpenerInitial')} | |
> | |
<Input.TextArea autoSize={{ minRows: 5 }} /> | |
</Form.Item> | |
<Form.Item | |
label={t('quote')} | |
valuePropName="checked" | |
name={['prompt_config', 'quote']} | |
tooltip={t('quoteTip')} | |
initialValue={true} | |
> | |
<Switch /> | |
</Form.Item> | |
{/* <Form.Item | |
label={t('selfRag')} | |
valuePropName="checked" | |
name={['prompt_config', 'self_rag']} | |
tooltip={t('selfRagTip')} | |
initialValue={false} | |
> | |
<Switch /> | |
</Form.Item> */} | |
<Form.Item | |
label={t('tts')} | |
valuePropName="checked" | |
name={['prompt_config', 'tts']} | |
tooltip={t('ttsTip')} | |
initialValue={false} | |
> | |
<Switch onChange={handleTtsChange} /> | |
</Form.Item> | |
<KnowledgeBaseItem></KnowledgeBaseItem> | |
</section> | |
); | |
}; | |
export default AssistantSetting; | |