fix(models): update assistant default model when editing model capabilities (#11732)

* fix(ProviderSettings): update assistant default model when model changes

Ensure assistant's default model is updated when the underlying model is modified to maintain consistency

* refactor(EditModelPopup): simplify assistant model update logic

Replace manual model updates with a single map operation to update both model and defaultModel fields. This makes the code more concise and easier to maintain.

* refactor(EditModelPopup): remove unused dispatch import and variable

* feat(EditModelPopup): add support for translate and quick model updates

Update the EditModelPopup component to handle updates for translate and quick models in addition to the default model. This ensures consistency across all model types when changes are made.
This commit is contained in:
Phantom 2025-12-07 14:01:11 +08:00 committed by GitHub
parent 8d1d09b1ec
commit 8f39ecf762
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2,8 +2,6 @@ import { TopView } from '@renderer/components/TopView'
import { useAssistants, useDefaultModel } from '@renderer/hooks/useAssistant' import { useAssistants, useDefaultModel } from '@renderer/hooks/useAssistant'
import { useProvider } from '@renderer/hooks/useProvider' import { useProvider } from '@renderer/hooks/useProvider'
import ModelEditContent from '@renderer/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent' import ModelEditContent from '@renderer/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent'
import { useAppDispatch } from '@renderer/store'
import { setModel } from '@renderer/store/assistants'
import type { Model, Provider } from '@renderer/types' import type { Model, Provider } from '@renderer/types'
import React, { useCallback, useState } from 'react' import React, { useCallback, useState } from 'react'
@ -19,9 +17,9 @@ interface Props extends ShowParams {
const PopupContainer: React.FC<Props> = ({ provider: _provider, model, resolve }) => { const PopupContainer: React.FC<Props> = ({ provider: _provider, model, resolve }) => {
const [open, setOpen] = useState(true) const [open, setOpen] = useState(true)
const { provider, updateProvider, models } = useProvider(_provider.id) const { provider, updateProvider, models } = useProvider(_provider.id)
const { assistants } = useAssistants() const { assistants, updateAssistants } = useAssistants()
const { defaultModel, setDefaultModel } = useDefaultModel() const { defaultModel, setDefaultModel, translateModel, setTranslateModel, quickModel, setQuickModel } =
const dispatch = useAppDispatch() useDefaultModel()
const onOk = () => { const onOk = () => {
setOpen(false) setOpen(false)
@ -42,22 +40,46 @@ const PopupContainer: React.FC<Props> = ({ provider: _provider, model, resolve }
updateProvider({ models: updatedModels }) updateProvider({ models: updatedModels })
assistants.forEach((assistant) => { updateAssistants(
if (assistant?.model?.id === updatedModel.id && assistant.model.provider === provider.id) { assistants.map((a) => {
dispatch( let model = a.model
setModel({ let defaultModel = a.defaultModel
assistantId: assistant.id, if (a.model?.id === updatedModel.id && a.model.provider === provider.id) {
model: updatedModel model = updatedModel
}
if (a.defaultModel?.id === updatedModel.id && a.defaultModel?.provider === provider.id) {
defaultModel = updatedModel
}
return { ...a, model, defaultModel }
}) })
) )
}
})
if (defaultModel?.id === updatedModel.id && defaultModel?.provider === provider.id) { if (defaultModel?.id === updatedModel.id && defaultModel?.provider === provider.id) {
setDefaultModel(updatedModel) setDefaultModel(updatedModel)
} }
if (translateModel?.id === updatedModel.id && translateModel?.provider === provider.id) {
setTranslateModel(updatedModel)
}
if (quickModel?.id === updatedModel.id && quickModel?.provider === provider.id) {
setQuickModel(updatedModel)
}
}, },
[models, updateProvider, provider.id, assistants, defaultModel, dispatch, setDefaultModel] [
models,
updateProvider,
updateAssistants,
assistants,
defaultModel?.id,
defaultModel?.provider,
provider.id,
translateModel?.id,
translateModel?.provider,
quickModel?.id,
quickModel?.provider,
setDefaultModel,
setTranslateModel,
setQuickModel
]
) )
return ( return (