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(
|
||||
state.copyWith(
|
||||
promptResponseState: PromptResponseState.sendingQuestion,
|
||||
promptResponseState: PromptResponseState.streamingAnswer,
|
||||
),
|
||||
);
|
||||
},
|
||||
|
@ -197,14 +197,13 @@ class _ChatContentPage extends StatelessWidget {
|
||||
final refSourceJsonString =
|
||||
message.metadata?[messageRefSourceJsonStringKey] as String?;
|
||||
|
||||
return BlocSelector<ChatBloc, ChatState, bool>(
|
||||
selector: (state) {
|
||||
return BlocBuilder<ChatBloc, ChatState>(
|
||||
builder: (context, state) {
|
||||
final chatController = context.read<ChatBloc>().chatController;
|
||||
final messages = chatController.messages
|
||||
.where((e) => onetimeMessageTypeFromMeta(e.metadata) == null);
|
||||
return messages.isEmpty ? false : messages.last.id == message.id;
|
||||
},
|
||||
builder: (context, isLastMessage) {
|
||||
final isLastMessage =
|
||||
messages.isEmpty ? false : messages.last.id == message.id;
|
||||
return ChatAIMessageWidget(
|
||||
user: message.author,
|
||||
messageUserId: message.id,
|
||||
@ -213,6 +212,7 @@ class _ChatContentPage extends StatelessWidget {
|
||||
questionId: questionId,
|
||||
chatId: view.id,
|
||||
refSourceJsonString: refSourceJsonString,
|
||||
isStreaming: state.promptResponseState != PromptResponseState.ready,
|
||||
isLastMessage: isLastMessage,
|
||||
onSelectedMetadata: (metadata) =>
|
||||
_onSelectMetadata(context, metadata),
|
||||
|
@ -189,6 +189,9 @@ class _DesktopAIPromptInputState extends State<DesktopAIPromptInput> {
|
||||
}
|
||||
|
||||
void handleSendPressed() {
|
||||
if (widget.isStreaming) {
|
||||
return;
|
||||
}
|
||||
final trimmedText = inputControlCubit.formatIntputText(
|
||||
textController.text.trim(),
|
||||
);
|
||||
|
@ -155,6 +155,9 @@ class _MobileAIPromptInputState extends State<MobileAIPromptInput> {
|
||||
}
|
||||
|
||||
void handleSendPressed() {
|
||||
if (widget.isStreaming) {
|
||||
return;
|
||||
}
|
||||
final trimmedText = inputControlCubit.formatIntputText(
|
||||
textController.text.trim(),
|
||||
);
|
||||
|
@ -35,6 +35,7 @@ class ChatAIMessageWidget extends StatelessWidget {
|
||||
this.onSelectedMetadata,
|
||||
this.onRegenerate,
|
||||
this.isLastMessage = false,
|
||||
this.isStreaming = false,
|
||||
});
|
||||
|
||||
final User user;
|
||||
@ -47,6 +48,7 @@ class ChatAIMessageWidget extends StatelessWidget {
|
||||
final String? refSourceJsonString;
|
||||
final void Function(ChatMessageRefSource metadata)? onSelectedMetadata;
|
||||
final void Function(String messageId)? onRegenerate;
|
||||
final bool isStreaming;
|
||||
final bool isLastMessage;
|
||||
|
||||
@override
|
||||
@ -81,7 +83,9 @@ class ChatAIMessageWidget extends StatelessWidget {
|
||||
: ChatAIMessageBubble(
|
||||
message: message,
|
||||
isLastMessage: isLastMessage,
|
||||
showActions: stream == null && state.text.isNotEmpty,
|
||||
showActions: stream == null &&
|
||||
state.text.isNotEmpty &&
|
||||
!isStreaming,
|
||||
onRegenerate: onRegenerate,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
Loading…
x
Reference in New Issue
Block a user