fix: try to fix message regeneration being appended instead of replaced (#7084)

This commit is contained in:
Richard Shiue 2024-12-30 12:38:56 +08:00 committed by GitHub
parent a521541cb7
commit 06d5bc734b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -272,15 +272,19 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
// 3 mean message response from AI // 3 mean message response from AI
if (pb.authorType == 3 && answerStreamMessageId.isNotEmpty) { if (pb.authorType == 3 && answerStreamMessageId.isNotEmpty) {
temporaryMessageIDMap[pb.messageId.toString()] = temporaryMessageIDMap.putIfAbsent(
answerStreamMessageId; pb.messageId.toString(),
() => answerStreamMessageId,
);
answerStreamMessageId = ''; answerStreamMessageId = '';
} }
// 1 mean message response from User // 1 mean message response from User
if (pb.authorType == 1 && questionStreamMessageId.isNotEmpty) { if (pb.authorType == 1 && questionStreamMessageId.isNotEmpty) {
temporaryMessageIDMap[pb.messageId.toString()] = temporaryMessageIDMap.putIfAbsent(
questionStreamMessageId; pb.messageId.toString(),
() => questionStreamMessageId,
);
questionStreamMessageId = ''; questionStreamMessageId = '';
} }
@ -422,8 +426,9 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
(question) { (question) {
if (!isClosed) { if (!isClosed) {
final streamAnswer = _createAnswerStreamMessage( final streamAnswer = _createAnswerStreamMessage(
answerStream!, stream: answerStream!,
question.messageId, questionMessageId: question.messageId,
fakeQuestionMessageId: questionStreamMessage.id,
); );
lastSentMessage = question; lastSentMessage = question;
@ -479,8 +484,8 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
(success) { (success) {
if (!isClosed) { if (!isClosed) {
final streamAnswer = _createAnswerStreamMessage( final streamAnswer = _createAnswerStreamMessage(
answerStream!, stream: answerStream!,
answerMessageId - 1, questionMessageId: answerMessageId - 1,
).copyWith(id: answerMessageIdString); ).copyWith(id: answerMessageIdString);
add(ChatEvent.receiveMessage(streamAnswer)); add(ChatEvent.receiveMessage(streamAnswer));
@ -491,11 +496,14 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
); );
} }
Message _createAnswerStreamMessage( Message _createAnswerStreamMessage({
AnswerStream stream, required AnswerStream stream,
Int64 questionMessageId, required Int64 questionMessageId,
) { String? fakeQuestionMessageId,
answerStreamMessageId = (questionMessageId + 1).toString(); }) {
answerStreamMessageId = fakeQuestionMessageId == null
? (questionMessageId + 1).toString()
: "${fakeQuestionMessageId}_ans";
return TextMessage( return TextMessage(
id: answerStreamMessageId, id: answerStreamMessageId,