Skip to content

Commit 9755135

Browse files
committed
chore: test
1 parent 2bea0d7 commit 9755135

File tree

12 files changed

+222
-197
lines changed

12 files changed

+222
-197
lines changed

frontend/appflowy_flutter/lib/plugins/ai_chat/application/chat_bloc.dart

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -349,22 +349,22 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
349349
);
350350

351351
isFetchingRelatedQuestions = true;
352-
await AIEventGetRelatedQuestion(payload).send().fold(
353-
(list) {
354-
// while fetching related questions, the user might enter a new
355-
// question or regenerate a previous response. In such cases, don't
356-
// display the relatedQuestions
357-
if (!isClosed && isFetchingRelatedQuestions) {
358-
add(
359-
ChatEvent.didReceiveRelatedQuestions(
360-
list.items.map((e) => e.content).toList(),
361-
),
362-
);
363-
isFetchingRelatedQuestions = false;
364-
}
365-
},
366-
(err) => Log.error("Failed to get related questions: $err"),
367-
);
352+
// await AIEventGetRelatedQuestion(payload).send().fold(
353+
// (list) {
354+
// // while fetching related questions, the user might enter a new
355+
// // question or regenerate a previous response. In such cases, don't
356+
// // display the relatedQuestions
357+
// if (!isClosed && isFetchingRelatedQuestions) {
358+
// add(
359+
// ChatEvent.didReceiveRelatedQuestions(
360+
// list.items.map((e) => e.content).toList(),
361+
// ),
362+
// );
363+
// isFetchingRelatedQuestions = false;
364+
// }
365+
// },
366+
// (err) => Log.error("Failed to get related questions: $err"),
367+
// );
368368
},
369369
);
370370
}

frontend/appflowy_flutter/lib/plugins/ai_chat/presentation/chat_page/text_message_widget.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ class TextMessageWidget extends StatelessWidget {
7979
selector: (state) => state.isSelectingMessages,
8080
builder: (context, isSelectingMessages) {
8181
return BlocBuilder<ChatBloc, ChatState>(
82+
buildWhen: (previous, current) =>
83+
previous.promptResponseState != current.promptResponseState,
8284
builder: (context, state) {
8385
final chatController = context.read<ChatBloc>().chatController;
8486
final messages = chatController.messages

frontend/appflowy_flutter/lib/plugins/ai_chat/presentation/message/ai_text_message.dart

Lines changed: 92 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:appflowy/plugins/ai_chat/application/chat_ai_message_bloc.dart';
44
import 'package:appflowy/plugins/ai_chat/application/chat_bloc.dart';
55
import 'package:appflowy/plugins/ai_chat/application/chat_entity.dart';
66
import 'package:appflowy/plugins/ai_chat/application/chat_message_stream.dart';
7+
import 'package:appflowy_backend/log.dart';
78
import 'package:appflowy_backend/protobuf/flowy-ai/protobuf.dart';
89
import 'package:easy_localization/easy_localization.dart';
910
import 'package:fixnum/fixnum.dart';
@@ -71,93 +72,90 @@ class ChatAIMessageWidget extends StatelessWidget {
7172
chatId: chatId,
7273
questionId: questionId,
7374
),
74-
child: BlocBuilder<ChatAIMessageBloc, ChatAIMessageState>(
75-
builder: (context, state) {
76-
final loadingText =
77-
state.progress?.step ?? LocaleKeys.chat_generatingResponse.tr();
75+
child: BlocConsumer<ChatAIMessageBloc, ChatAIMessageState>(
76+
listenWhen: (previous, current) =>
77+
previous.messageState != current.messageState,
78+
listener: (context, state) {
79+
if (state.stream?.error?.isEmpty != false) {
80+
return;
81+
}
82+
context.read<ChatBloc>().add(ChatEvent.deleteMessage(message));
83+
},
84+
builder: (context, blocState) {
85+
final loadingText = blocState.progress?.step ??
86+
LocaleKeys.chat_generatingResponse.tr();
7887

79-
return BlocListener<ChatBloc, ChatState>(
80-
listenWhen: (previous, current) =>
81-
previous.clearErrorMessages != current.clearErrorMessages,
82-
listener: (context, chatState) {
83-
if (state.stream?.error?.isEmpty != false) {
84-
return;
85-
}
86-
context.read<ChatBloc>().add(ChatEvent.deleteMessage(message));
87-
},
88-
child: Padding(
89-
padding: AIChatUILayout.messageMargin,
90-
child: state.messageState.when(
91-
loading: () => ChatAIMessageBubble(
92-
message: message,
93-
showActions: false,
94-
child: Padding(
95-
padding: const EdgeInsets.only(top: 8.0),
96-
child: AILoadingIndicator(text: loadingText),
97-
),
88+
return Padding(
89+
padding: AIChatUILayout.messageMargin,
90+
child: blocState.messageState.when(
91+
loading: () => ChatAIMessageBubble(
92+
message: message,
93+
showActions: false,
94+
child: Padding(
95+
padding: const EdgeInsets.only(top: 8.0),
96+
child: AILoadingIndicator(text: loadingText),
9897
),
99-
ready: () {
100-
return state.text.isEmpty
101-
? _LoadingMessage(
102-
message: message,
103-
loadingText: loadingText,
104-
)
105-
: _NonEmptyMessage(
106-
user: user,
107-
messageUserId: messageUserId,
108-
message: message,
109-
stream: stream,
110-
questionId: questionId,
111-
chatId: chatId,
112-
refSourceJsonString: refSourceJsonString,
113-
onStopStream: onStopStream,
114-
onSelectedMetadata: onSelectedMetadata,
115-
onRegenerate: onRegenerate,
116-
onChangeFormat: onChangeFormat,
117-
onChangeModel: onChangeModel,
118-
isLastMessage: isLastMessage,
119-
isStreaming: isStreaming,
120-
isSelectingMessages: isSelectingMessages,
121-
enableAnimation: enableAnimation,
122-
);
123-
},
124-
onError: (error) {
125-
return ChatErrorMessageWidget(
126-
errorMessage: LocaleKeys.chat_aiServerUnavailable.tr(),
127-
);
128-
},
129-
onAIResponseLimit: () {
130-
return ChatErrorMessageWidget(
131-
errorMessage:
132-
LocaleKeys.sideBar_askOwnerToUpgradeToAIMax.tr(),
133-
);
134-
},
135-
onAIImageResponseLimit: () {
136-
return ChatErrorMessageWidget(
137-
errorMessage: LocaleKeys.sideBar_purchaseAIMax.tr(),
138-
);
139-
},
140-
onAIMaxRequired: (message) {
141-
return ChatErrorMessageWidget(
142-
errorMessage: message,
143-
);
144-
},
145-
onInitializingLocalAI: () {
146-
onStopStream();
147-
148-
return ChatErrorMessageWidget(
149-
errorMessage: LocaleKeys
150-
.settings_aiPage_keys_localAIInitializing
151-
.tr(),
152-
);
153-
},
154-
onAIQuestion: (questionData) {
155-
return AIQuestionDataWidget(
156-
message: message,
157-
questionData: questionData,
158-
);
159-
},
16098
),
99+
ready: () {
100+
return blocState.text.isEmpty
101+
? _LoadingMessage(
102+
message: message,
103+
loadingText: loadingText,
104+
)
105+
: _NonEmptyMessage(
106+
user: user,
107+
messageUserId: messageUserId,
108+
message: message,
109+
stream: stream,
110+
questionId: questionId,
111+
chatId: chatId,
112+
refSourceJsonString: refSourceJsonString,
113+
onStopStream: onStopStream,
114+
onSelectedMetadata: onSelectedMetadata,
115+
onRegenerate: onRegenerate,
116+
onChangeFormat: onChangeFormat,
117+
onChangeModel: onChangeModel,
118+
isLastMessage: isLastMessage,
119+
isStreaming: isStreaming,
120+
isSelectingMessages: isSelectingMessages,
121+
enableAnimation: enableAnimation,
122+
);
123+
},
124+
onError: (error) {
125+
return ChatErrorMessageWidget(
126+
errorMessage: LocaleKeys.chat_aiServerUnavailable.tr(),
127+
);
128+
},
129+
onAIResponseLimit: () {
130+
return ChatErrorMessageWidget(
131+
errorMessage:
132+
LocaleKeys.sideBar_askOwnerToUpgradeToAIMax.tr(),
133+
);
134+
},
135+
onAIImageResponseLimit: () {
136+
return ChatErrorMessageWidget(
137+
errorMessage: LocaleKeys.sideBar_purchaseAIMax.tr(),
138+
);
139+
},
140+
onAIMaxRequired: (message) {
141+
return ChatErrorMessageWidget(
142+
errorMessage: message,
143+
);
144+
},
145+
onInitializingLocalAI: () {
146+
onStopStream();
147+
148+
return ChatErrorMessageWidget(
149+
errorMessage:
150+
LocaleKeys.settings_aiPage_keys_localAIInitializing.tr(),
151+
);
152+
},
153+
onAIQuestion: (questionData) {
154+
return AIQuestionDataWidget(
155+
message: message,
156+
questionData: questionData,
157+
);
158+
},
161159
),
162160
);
163161
},
@@ -300,13 +298,16 @@ class _AIQuestionDataItem extends StatelessWidget {
300298

301299
@override
302300
Widget build(BuildContext context) {
303-
return FlowyButton(
304-
text: FlowyText(question),
305-
onTap: () {
306-
context.read<ChatBloc>().add(
307-
ChatEvent.sendMessage(message: question),
308-
);
309-
},
301+
return SizedBox(
302+
height: 32,
303+
child: FlowyButton(
304+
text: FlowyText(question),
305+
onTap: () {
306+
context.read<ChatBloc>().add(
307+
ChatEvent.sendMessage(message: question),
308+
);
309+
},
310+
),
310311
);
311312
}
312313
}

frontend/rust-lib/Cargo.lock

Lines changed: 15 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)