chore: more ai ui fixes (#6799)

* chore: more ai ui fixes

* fix: messages arriving out of order

* chore: don't drop focus when clicking on sample questions
This commit is contained in:
Richard Shiue 2024-11-15 12:31:51 +03:00 committed by GitHub
parent 225683562b
commit 521d74e082
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 13 additions and 12 deletions

View File

@ -86,7 +86,7 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
// Loading messages // Loading messages
startLoadingPrevMessage: () async { startLoadingPrevMessage: () async {
Int64? beforeMessageId; Int64? beforeMessageId;
final oldestMessage = _getOlderstMessage(); final oldestMessage = _getOldestMessage();
if (oldestMessage != null) { if (oldestMessage != null) {
try { try {
beforeMessageId = Int64.parseInt(oldestMessage.id); beforeMessageId = Int64.parseInt(oldestMessage.id);
@ -107,8 +107,7 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
Log.debug("did load previous messages: ${messages.length}"); Log.debug("did load previous messages: ${messages.length}");
final onetimeMessages = _getOnetimeMessages(); final onetimeMessages = _getOnetimeMessages();
final allMessages = _permanentMessages(); final allMessages = _permanentMessages();
final uniqueMessages = {...allMessages, ...messages}.toList() final uniqueMessages = {...allMessages, ...messages}.toList();
..sort((a, b) => b.id.compareTo(a.id));
uniqueMessages.insertAll(0, onetimeMessages); uniqueMessages.insertAll(0, onetimeMessages);
@ -123,8 +122,7 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
didLoadLatestMessages: (List<Message> messages) { didLoadLatestMessages: (List<Message> messages) {
final onetimeMessages = _getOnetimeMessages(); final onetimeMessages = _getOnetimeMessages();
final allMessages = _permanentMessages(); final allMessages = _permanentMessages();
final uniqueMessages = {...allMessages, ...messages}.toList() final uniqueMessages = {...allMessages, ...messages}.toList();
..sort((a, b) => b.id.compareTo(a.id));
uniqueMessages.insertAll(0, onetimeMessages); uniqueMessages.insertAll(0, onetimeMessages);
emit( emit(
state.copyWith( state.copyWith(
@ -351,7 +349,7 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
return messages; return messages;
} }
Message? _getOlderstMessage() { Message? _getOldestMessage() {
// get the last message that is not a one-time message // get the last message that is not a one-time message
final message = state.messages.lastWhereOrNull((element) { final message = state.messages.lastWhereOrNull((element) {
return !(element.metadata?.containsKey(onetimeShotType) == true); return !(element.metadata?.containsKey(onetimeShotType) == true);

View File

@ -192,12 +192,14 @@ class _ChatContentPage extends StatelessWidget {
.add(const ChatEvent.startLoadingPrevMessage()); .add(const ChatEvent.startLoadingPrevMessage());
} }
}, },
emptyState: ChatWelcomePage( emptyState: TextFieldTapRegion(
child: ChatWelcomePage(
userProfile: userProfile, userProfile: userProfile,
onSelectedQuestion: (question) => context onSelectedQuestion: (question) => context
.read<ChatBloc>() .read<ChatBloc>()
.add(ChatEvent.sendMessage(message: question)), .add(ChatEvent.sendMessage(message: question)),
), ),
),
messageWidthRatio: AIChatUILayout.messageWidthRatio, messageWidthRatio: AIChatUILayout.messageWidthRatio,
textMessageBuilder: ( textMessageBuilder: (
textMessage, { textMessage, {

View File

@ -124,7 +124,7 @@ class _MobileAIPromptInputState extends State<MobileAIPromptInput> {
child: IntrinsicHeight( child: IntrinsicHeight(
child: Row( child: Row(
children: [ children: [
const HSpace(6.0), const HSpace(8.0),
Expanded(child: _inputTextField(context)), Expanded(child: _inputTextField(context)),
_mentionButton(), _mentionButton(),
const HSpace(6.0), const HSpace(6.0),

View File

@ -106,6 +106,7 @@ class _AppFlowyEditorMarkdownState extends State<_AppFlowyEditorMarkdown> {
shrinkWrap: true, shrinkWrap: true,
// the editor is not editable in the chat // the editor is not editable in the chat
editable: false, editable: false,
disableKeyboardService: true,
editorStyle: editorStyle, editorStyle: editorStyle,
editorScrollController: scrollController, editorScrollController: scrollController,
blockComponentBuilders: blockBuilders, blockComponentBuilders: blockBuilders,