mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-19 14:41:24 +08:00
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:
parent
8d1d09b1ec
commit
8f39ecf762
@ -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 (
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user