fix: quick assistant avatar and search (#10281)

This commit is contained in:
one 2025-09-28 14:15:56 +08:00 committed by GitHub
parent 5524571c80
commit 20f5271682
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -11,9 +11,10 @@ import {
setEnableQuickAssistant,
setReadClipboardAtStartup
} from '@renderer/store/settings'
import { matchKeywordsInString } from '@renderer/utils'
import HomeWindow from '@renderer/windows/mini/home/HomeWindow'
import { Button, Select, Switch, Tooltip } from 'antd'
import { FC } from 'react'
import { FC, useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import styled from 'styled-components'
@ -26,9 +27,15 @@ const QuickAssistantSettings: FC = () => {
const dispatch = useAppDispatch()
const { assistants } = useAssistants()
const { quickAssistantId } = useAppSelector((state) => state.llm)
const { defaultAssistant } = useDefaultAssistant()
const { defaultAssistant: _defaultAssistant } = useDefaultAssistant()
const { defaultModel } = useDefaultModel()
// Take the "default assistant" from the assistant list first.
const defaultAssistant = useMemo(
() => assistants.find((a) => a.id === _defaultAssistant.id) || _defaultAssistant,
[assistants, _defaultAssistant]
)
const handleEnableQuickAssistant = async (enable: boolean) => {
dispatch(setEnableQuickAssistant(enable))
await window.api.config.set('enableQuickAssistant', enable, true)
@ -110,27 +117,39 @@ const QuickAssistantSettings: FC = () => {
value={quickAssistantId || defaultAssistant.id}
style={{ width: 300, height: 34 }}
onChange={(value) => dispatch(setQuickAssistantId(value))}
placeholder={t('settings.models.quick_assistant_selection')}>
<Select.Option key={defaultAssistant.id} value={defaultAssistant.id}>
<AssistantItem>
<ModelAvatar model={defaultAssistant.model || defaultModel} size={18} />
<AssistantName>{defaultAssistant.name}</AssistantName>
<Spacer />
<DefaultTag isCurrent={true}>{t('settings.models.quick_assistant_default_tag')}</DefaultTag>
</AssistantItem>
</Select.Option>
{assistants
.filter((a) => a.id !== defaultAssistant.id)
.map((a) => (
<Select.Option key={a.id} value={a.id}>
placeholder={t('settings.models.quick_assistant_selection')}
showSearch
options={[
{
key: defaultAssistant.id,
value: defaultAssistant.id,
title: defaultAssistant.name,
label: (
<AssistantItem>
<ModelAvatar model={a.model || defaultModel} size={18} />
<AssistantName>{a.name}</AssistantName>
<ModelAvatar model={defaultAssistant.model || defaultModel} size={18} />
<AssistantName>{defaultAssistant.name}</AssistantName>
<Spacer />
<DefaultTag isCurrent={true}>{t('settings.models.quick_assistant_default_tag')}</DefaultTag>
</AssistantItem>
</Select.Option>
))}
</Select>
)
},
...assistants
.filter((a) => a.id !== defaultAssistant.id)
.map((a) => ({
key: a.id,
value: a.id,
title: a.name,
label: (
<AssistantItem>
<ModelAvatar model={a.model || defaultModel} size={18} />
<AssistantName>{a.name}</AssistantName>
<Spacer />
</AssistantItem>
)
}))
]}
filterOption={(input, option) => matchKeywordsInString(input, option?.title || '')}
/>
</HStack>
)}
<HStack alignItems="center" gap={0}>