mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-08-18 13:51:22 +00:00
chore: regenerate response improvements (#7018)
* fix: disable sending message while streaming * chore: don't allow regenerate while streaming
This commit is contained in:
parent
d25a399aba
commit
ddcdd545d9
@ -246,7 +246,7 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
|
|||||||
|
|
||||||
emit(
|
emit(
|
||||||
state.copyWith(
|
state.copyWith(
|
||||||
promptResponseState: PromptResponseState.sendingQuestion,
|
promptResponseState: PromptResponseState.streamingAnswer,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -197,14 +197,13 @@ class _ChatContentPage extends StatelessWidget {
|
|||||||
final refSourceJsonString =
|
final refSourceJsonString =
|
||||||
message.metadata?[messageRefSourceJsonStringKey] as String?;
|
message.metadata?[messageRefSourceJsonStringKey] as String?;
|
||||||
|
|
||||||
return BlocSelector<ChatBloc, ChatState, bool>(
|
return BlocBuilder<ChatBloc, ChatState>(
|
||||||
selector: (state) {
|
builder: (context, state) {
|
||||||
final chatController = context.read<ChatBloc>().chatController;
|
final chatController = context.read<ChatBloc>().chatController;
|
||||||
final messages = chatController.messages
|
final messages = chatController.messages
|
||||||
.where((e) => onetimeMessageTypeFromMeta(e.metadata) == null);
|
.where((e) => onetimeMessageTypeFromMeta(e.metadata) == null);
|
||||||
return messages.isEmpty ? false : messages.last.id == message.id;
|
final isLastMessage =
|
||||||
},
|
messages.isEmpty ? false : messages.last.id == message.id;
|
||||||
builder: (context, isLastMessage) {
|
|
||||||
return ChatAIMessageWidget(
|
return ChatAIMessageWidget(
|
||||||
user: message.author,
|
user: message.author,
|
||||||
messageUserId: message.id,
|
messageUserId: message.id,
|
||||||
@ -213,6 +212,7 @@ class _ChatContentPage extends StatelessWidget {
|
|||||||
questionId: questionId,
|
questionId: questionId,
|
||||||
chatId: view.id,
|
chatId: view.id,
|
||||||
refSourceJsonString: refSourceJsonString,
|
refSourceJsonString: refSourceJsonString,
|
||||||
|
isStreaming: state.promptResponseState != PromptResponseState.ready,
|
||||||
isLastMessage: isLastMessage,
|
isLastMessage: isLastMessage,
|
||||||
onSelectedMetadata: (metadata) =>
|
onSelectedMetadata: (metadata) =>
|
||||||
_onSelectMetadata(context, metadata),
|
_onSelectMetadata(context, metadata),
|
||||||
|
@ -189,6 +189,9 @@ class _DesktopAIPromptInputState extends State<DesktopAIPromptInput> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void handleSendPressed() {
|
void handleSendPressed() {
|
||||||
|
if (widget.isStreaming) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
final trimmedText = inputControlCubit.formatIntputText(
|
final trimmedText = inputControlCubit.formatIntputText(
|
||||||
textController.text.trim(),
|
textController.text.trim(),
|
||||||
);
|
);
|
||||||
|
@ -155,6 +155,9 @@ class _MobileAIPromptInputState extends State<MobileAIPromptInput> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void handleSendPressed() {
|
void handleSendPressed() {
|
||||||
|
if (widget.isStreaming) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
final trimmedText = inputControlCubit.formatIntputText(
|
final trimmedText = inputControlCubit.formatIntputText(
|
||||||
textController.text.trim(),
|
textController.text.trim(),
|
||||||
);
|
);
|
||||||
|
@ -35,6 +35,7 @@ class ChatAIMessageWidget extends StatelessWidget {
|
|||||||
this.onSelectedMetadata,
|
this.onSelectedMetadata,
|
||||||
this.onRegenerate,
|
this.onRegenerate,
|
||||||
this.isLastMessage = false,
|
this.isLastMessage = false,
|
||||||
|
this.isStreaming = false,
|
||||||
});
|
});
|
||||||
|
|
||||||
final User user;
|
final User user;
|
||||||
@ -47,6 +48,7 @@ class ChatAIMessageWidget extends StatelessWidget {
|
|||||||
final String? refSourceJsonString;
|
final String? refSourceJsonString;
|
||||||
final void Function(ChatMessageRefSource metadata)? onSelectedMetadata;
|
final void Function(ChatMessageRefSource metadata)? onSelectedMetadata;
|
||||||
final void Function(String messageId)? onRegenerate;
|
final void Function(String messageId)? onRegenerate;
|
||||||
|
final bool isStreaming;
|
||||||
final bool isLastMessage;
|
final bool isLastMessage;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -81,7 +83,9 @@ class ChatAIMessageWidget extends StatelessWidget {
|
|||||||
: ChatAIMessageBubble(
|
: ChatAIMessageBubble(
|
||||||
message: message,
|
message: message,
|
||||||
isLastMessage: isLastMessage,
|
isLastMessage: isLastMessage,
|
||||||
showActions: stream == null && state.text.isNotEmpty,
|
showActions: stream == null &&
|
||||||
|
state.text.isNotEmpty &&
|
||||||
|
!isStreaming,
|
||||||
onRegenerate: onRegenerate,
|
onRegenerate: onRegenerate,
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user