mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-24 10:40:07 +08:00
fix: token usage not updated after editing message (#6725)
fix: update token usage when edit message
This commit is contained in:
parent
8f8c2f852e
commit
23eaae80c8
@ -332,11 +332,11 @@ export function useMessageOperations(topic: Topic) {
|
||||
}
|
||||
|
||||
// 6. Log operations for debugging
|
||||
console.log('[editMessageBlocks] Operations:', {
|
||||
blocksToRemove: blockIdsToRemove.length,
|
||||
blocksToUpdate: blocksToUpdate.length,
|
||||
blocksToAdd: blocksToAdd.length
|
||||
})
|
||||
// console.log('[editMessageBlocks] Operations:', {
|
||||
// blocksToRemove: blockIdsToRemove.length,
|
||||
// blocksToUpdate: blocksToUpdate.length,
|
||||
// blocksToAdd: blocksToAdd.length
|
||||
// })
|
||||
|
||||
// 7. Update Redux state and database
|
||||
// First update message and add/update blocks
|
||||
|
||||
@ -21,6 +21,7 @@ import MessageErrorBoundary from './MessageErrorBoundary'
|
||||
import MessageHeader from './MessageHeader'
|
||||
import MessageMenubar from './MessageMenubar'
|
||||
import MessageTokens from './MessageTokens'
|
||||
import { estimateMessageUsage } from '@renderer/services/TokenService'
|
||||
|
||||
interface Props {
|
||||
message: Message
|
||||
@ -52,7 +53,7 @@ const MessageItem: FC<Props> = ({
|
||||
const model = useModel(getMessageModelId(message), message.model?.provider) || message.model
|
||||
const { isBubbleStyle } = useMessageStyle()
|
||||
const { showMessageDivider, messageFont, fontSize, narrowMode, messageStyle } = useSettings()
|
||||
const { editMessageBlocks, resendUserMessageWithEdit } = useMessageOperations(topic)
|
||||
const { editMessageBlocks, resendUserMessageWithEdit, editMessage } = useMessageOperations(topic)
|
||||
const messageContainerRef = useRef<HTMLDivElement>(null)
|
||||
const { editingMessageId, stopEditing } = useMessageEditing()
|
||||
const isEditing = editingMessageId === message.id
|
||||
@ -69,14 +70,15 @@ const MessageItem: FC<Props> = ({
|
||||
const handleEditSave = useCallback(
|
||||
async (blocks: MessageBlock[]) => {
|
||||
try {
|
||||
console.log('after save blocks', blocks)
|
||||
await editMessageBlocks(message.id, blocks)
|
||||
const usage = await estimateMessageUsage(message)
|
||||
editMessage(message.id, { usage: usage })
|
||||
stopEditing()
|
||||
} catch (error) {
|
||||
console.error('Failed to save message blocks:', error)
|
||||
}
|
||||
},
|
||||
[message, editMessageBlocks, stopEditing]
|
||||
[message, editMessageBlocks, stopEditing, editMessage]
|
||||
)
|
||||
|
||||
const handleEditResend = useCallback(
|
||||
|
||||
@ -48,10 +48,25 @@ async function getMessageParam(message: Message): Promise<MessageItem[]> {
|
||||
return param
|
||||
}
|
||||
|
||||
/**
|
||||
* 估算文本内容的 token 数量
|
||||
*
|
||||
* @param text - 需要估算的文本内容
|
||||
* @returns 返回估算的 token 数量
|
||||
*/
|
||||
export function estimateTextTokens(text: string) {
|
||||
return approximateTokenSize(text)
|
||||
}
|
||||
|
||||
/**
|
||||
* 估算图片文件的 token 数量
|
||||
*
|
||||
* 根据图片文件大小计算预估的 token 数量。
|
||||
* 当前使用简单的文件大小除以 100 的方式进行估算。
|
||||
*
|
||||
* @param file - 图片文件对象
|
||||
* @returns 返回估算的 token 数量
|
||||
*/
|
||||
export function estimateImageTokens(file: FileType) {
|
||||
return Math.floor(file.size / 100)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user