feat: One-click copy model id (#4190)

* feat:One-click copy model id

* fix:model id消失问题,样式问题
This commit is contained in:
Cherry 2025-04-01 16:11:06 +08:00 committed by GitHub
parent efa68c8519
commit a90be7e83f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,12 +1,12 @@
import { DownOutlined, UpOutlined } from '@ant-design/icons' import { DownOutlined, UpOutlined } from '@ant-design/icons'
import CopyIcon from '@renderer/components/Icons/CopyIcon'
import { isEmbeddingModel, isFunctionCallingModel, isReasoningModel, isVisionModel } from '@renderer/config/models' import { isEmbeddingModel, isFunctionCallingModel, isReasoningModel, isVisionModel } from '@renderer/config/models'
import { Model, ModelType } from '@renderer/types' import { Model, ModelType } from '@renderer/types'
import { getDefaultGroupName } from '@renderer/utils' import { getDefaultGroupName } from '@renderer/utils'
import { Button, Checkbox, Divider, Flex, Form, Input, Modal } from 'antd' import { Button, Checkbox, Divider, Flex, Form, Input, message, Modal } from 'antd'
import { FC, useState } from 'react' import { FC, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import styled from 'styled-components' import styled from 'styled-components'
interface ModelEditContentProps { interface ModelEditContentProps {
model: Model model: Model
onUpdateModel: (model: Model) => void onUpdateModel: (model: Model) => void
@ -65,17 +65,29 @@ const ModelEditContent: FC<ModelEditContentProps> = ({ model, onUpdateModel, ope
label={t('settings.models.add.model_id')} label={t('settings.models.add.model_id')}
tooltip={t('settings.models.add.model_id.tooltip')} tooltip={t('settings.models.add.model_id.tooltip')}
rules={[{ required: true }]}> rules={[{ required: true }]}>
<Input <Flex justify="space-between" gap={5}>
placeholder={t('settings.models.add.model_id.placeholder')} <Input
spellCheck={false} placeholder={t('settings.models.add.model_id.placeholder')}
maxLength={200} spellCheck={false}
disabled={true} maxLength={200}
onChange={(e) => { disabled={true}
const value = e.target.value value={model.id}
form.setFieldValue('name', value) onChange={(e) => {
form.setFieldValue('group', getDefaultGroupName(value)) const value = e.target.value
}} form.setFieldValue('name', value)
/> form.setFieldValue('group', getDefaultGroupName(value))
}}
/>
<Button
onClick={() => {
//copy model id
const val = form.getFieldValue('name')
navigator.clipboard.writeText((val.id || model.id) as string)
message.success(t('message.copied'))
}}>
<CopyIcon /> {t('chat.topics.copy.title')}
</Button>
</Flex>
</Form.Item> </Form.Item>
<Form.Item <Form.Item
name="name" name="name"