@@ -4,6 +4,7 @@ import 'package:appflowy/plugins/ai_chat/application/chat_ai_message_bloc.dart';
44import 'package:appflowy/plugins/ai_chat/application/chat_bloc.dart' ;
55import 'package:appflowy/plugins/ai_chat/application/chat_entity.dart' ;
66import 'package:appflowy/plugins/ai_chat/application/chat_message_stream.dart' ;
7+ import 'package:appflowy_backend/log.dart' ;
78import 'package:appflowy_backend/protobuf/flowy-ai/protobuf.dart' ;
89import 'package:easy_localization/easy_localization.dart' ;
910import '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}
0 commit comments