fix: token usage not updated after editing message (#6725)

fix: update token usage when edit message
This commit is contained in:
Wang Jiyuan 2025-06-02 23:17:40 +08:00 committed by GitHub
parent 8f8c2f852e
commit 23eaae80c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 8 deletions

View File

@ -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

View File

@ -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(

View File

@ -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)
}