feat: enhance message model handling and user display
- Updated Message component to fallback to message.model if model retrieval fails, improving robustness. - Refactored MessageHeader to utilize getModelName for better user name display based on message role, enhancing clarity. - Introduced getModelName function in ModelService to streamline model name retrieval, improving code modularity and readability.
This commit is contained in:
parent
57aef23741
commit
084da9ebab
@ -53,7 +53,7 @@ const MessageItem: FC<Props> = ({
|
|||||||
const [message, setMessage] = useState(_message)
|
const [message, setMessage] = useState(_message)
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { assistant, setModel } = useAssistant(message.assistantId)
|
const { assistant, setModel } = useAssistant(message.assistantId)
|
||||||
const model = useModel(getMessageModelId(message))
|
const model = useModel(getMessageModelId(message)) || message.model
|
||||||
const { isBubbleStyle } = useMessageStyle()
|
const { isBubbleStyle } = useMessageStyle()
|
||||||
const { showMessageDivider, messageFont, fontSize } = useSettings()
|
const { showMessageDivider, messageFont, fontSize } = useSettings()
|
||||||
const messageContainerRef = useRef<HTMLDivElement>(null)
|
const messageContainerRef = useRef<HTMLDivElement>(null)
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import { useTheme } from '@renderer/context/ThemeProvider'
|
|||||||
import useAvatar from '@renderer/hooks/useAvatar'
|
import useAvatar from '@renderer/hooks/useAvatar'
|
||||||
import { useMessageStyle, useSettings } from '@renderer/hooks/useSettings'
|
import { useMessageStyle, useSettings } from '@renderer/hooks/useSettings'
|
||||||
import { getMessageModelId } from '@renderer/services/MessagesService'
|
import { getMessageModelId } from '@renderer/services/MessagesService'
|
||||||
|
import { getModelName } from '@renderer/services/ModelService'
|
||||||
import { Assistant, Message, Model } from '@renderer/types'
|
import { Assistant, Message, Model } from '@renderer/types'
|
||||||
import { firstLetter, removeLeadingEmoji } from '@renderer/utils'
|
import { firstLetter, removeLeadingEmoji } from '@renderer/utils'
|
||||||
import { Avatar } from 'antd'
|
import { Avatar } from 'antd'
|
||||||
@ -35,10 +36,16 @@ const MessageHeader: FC<Props> = memo(({ assistant, model, message }) => {
|
|||||||
const avatarSource = useMemo(() => getAvatarSource(isLocalAi, getMessageModelId(message)), [message])
|
const avatarSource = useMemo(() => getAvatarSource(isLocalAi, getMessageModelId(message)), [message])
|
||||||
|
|
||||||
const getUserName = useCallback(() => {
|
const getUserName = useCallback(() => {
|
||||||
if (isLocalAi && message.role !== 'user') return APP_NAME
|
if (isLocalAi && message.role !== 'user') {
|
||||||
if (message.role === 'assistant') return model?.name || model?.id || message.modelId || ''
|
return APP_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
if (message.role === 'assistant') {
|
||||||
|
return getModelName(model) || getMessageModelId(message) || ''
|
||||||
|
}
|
||||||
|
|
||||||
return userName || t('common.you')
|
return userName || t('common.you')
|
||||||
}, [message.modelId, message.role, model?.id, model?.name, t, userName])
|
}, [message, model, t, userName])
|
||||||
|
|
||||||
const isAssistantMessage = message.role === 'assistant'
|
const isAssistantMessage = message.role === 'assistant'
|
||||||
const showMinappIcon = sidebarIcons.visible.includes('minapp')
|
const showMinappIcon = sidebarIcons.visible.includes('minapp')
|
||||||
|
|||||||
@ -15,3 +15,7 @@ export const hasModel = (m?: Model) => {
|
|||||||
|
|
||||||
return allModels.find((model) => model.id === m?.id)
|
return allModels.find((model) => model.id === m?.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getModelName(model?: Model) {
|
||||||
|
return model?.name || model?.id || ''
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user