feat(MessageOperations): Add local database synchronization for message updates

This commit is contained in:
kangfenmao 2025-03-12 11:22:00 +08:00
parent 0e5411d3ba
commit 38c8327cbf
3 changed files with 19 additions and 18 deletions

View File

@ -1,3 +1,4 @@
import db from '@renderer/databases'
import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService'
import { useAppDispatch, useAppSelector } from '@renderer/store' import { useAppDispatch, useAppSelector } from '@renderer/store'
import { import {
@ -62,8 +63,11 @@ export function useMessageOperations(topic: Topic) {
updates updates
}) })
) )
db.topics.update(topic.id, {
messages: messages.map((m) => (m.id === messageId ? { ...m, ...updates } : m))
})
}, },
[dispatch, topic.id] [dispatch, messages, topic.id]
) )
/** /**

View File

@ -250,9 +250,6 @@ const MessageMenubar: FC<Props> = (props) => {
await modelGenerating() await modelGenerating()
const selectedModel = await SelectModelPopup.show({ model }) const selectedModel = await SelectModelPopup.show({ model })
if (!selectedModel) return if (!selectedModel) return
// const mentionModelMessage: Message = resetAssistantMessage(message, selectedModel)
// dispatch(updateMessage({ topicId: topic.id, messageId: message.id, updates: _message }))
resendMessage(message, { ...assistant, model: selectedModel }, true) resendMessage(message, { ...assistant, model: selectedModel }, true)
} }

View File

@ -190,20 +190,6 @@ const messagesSlice = createSlice({
// } // }
}) })
export const {
setTopicLoading,
setError,
setDisplayCount,
addMessage,
updateMessage,
setCurrentTopic,
clearTopicMessages,
loadTopicMessages,
setStreamMessage,
commitStreamMessage,
clearStreamMessage
} = messagesSlice.actions
const handleResponseMessageUpdate = ( const handleResponseMessageUpdate = (
assistant: Assistant, assistant: Assistant,
message: Message, message: Message,
@ -523,4 +509,18 @@ export const selectStreamMessage = (state: RootState, topicId: string, messageId
return messagesState.streamMessagesByTopic[topicId]?.[messageId] || null return messagesState.streamMessagesByTopic[topicId]?.[messageId] || null
} }
export const {
setTopicLoading,
setError,
setDisplayCount,
addMessage,
updateMessage,
setCurrentTopic,
clearTopicMessages,
loadTopicMessages,
setStreamMessage,
commitStreamMessage,
clearStreamMessage
} = messagesSlice.actions
export default messagesSlice.reducer export default messagesSlice.reducer