From c6599edc3d5b9b4b9854c03d7a66959f85372c4b Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Mon, 25 Aug 2025 18:03:50 +0800 Subject: [PATCH] :lipstick: Serval changes to optimize UX --- lib/screens/chat/room.dart | 20 ++++++++++++++------ lib/screens/chat/room_detail.dart | 8 ++++++-- lib/screens/realm/realm_detail.dart | 8 ++++++-- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/lib/screens/chat/room.dart b/lib/screens/chat/room.dart index 99b0dbb2..a28386e6 100644 --- a/lib/screens/chat/room.dart +++ b/lib/screens/chat/room.dart @@ -455,10 +455,13 @@ class MessagesNotifier extends _$MessagesNotifier { final currentMessages = state.value ?? []; if (editingTo != null) { - final newMessages = currentMessages - .where((m) => m.id != localMessage.id) // remove pending message - .map((m) => m.id == editingTo.id ? updatedMessage : m) // update original message - .toList(); + final newMessages = + currentMessages + .where((m) => m.id != localMessage.id) // remove pending message + .map( + (m) => m.id == editingTo.id ? updatedMessage : m, + ) // update original message + .toList(); state = AsyncValue.data(newMessages); } else { final newMessages = @@ -1549,7 +1552,7 @@ class _ChatInput extends HookConsumerWidget { children: [ IconButton( tooltip: 'stickers'.tr(), - icon: const Icon(Symbols.emoji_symbols), + icon: const Icon(Symbols.add_reaction), onPressed: () { final size = MediaQuery.of(context).size; showStickerPickerPopover( @@ -1659,8 +1662,13 @@ class _ChatInput extends HookConsumerWidget { horizontal: 12, vertical: 4, ), + counterText: + messageController.text.length > 1024 + ? '${messageController.text.length}/4096' + : null, ), - maxLines: null, + maxLines: 3, + minLines: 1, onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(), ), diff --git a/lib/screens/chat/room_detail.dart b/lib/screens/chat/room_detail.dart index 3bcdd679..5b59010e 100644 --- a/lib/screens/chat/room_detail.dart +++ b/lib/screens/chat/room_detail.dart @@ -9,6 +9,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:island/models/chat.dart'; import 'package:island/pods/network.dart'; import 'package:island/screens/chat/chat.dart'; +import 'package:island/widgets/account/account_pfc.dart'; import 'package:island/widgets/account/account_picker.dart'; import 'package:island/widgets/account/status.dart'; import 'package:island/widgets/alert.dart'; @@ -666,8 +667,11 @@ class _ChatMemberListSheet extends HookConsumerWidget { final member = data.items[index]; return ListTile( contentPadding: EdgeInsets.only(left: 16, right: 12), - leading: ProfilePictureWidget( - fileId: member.account.profile.picture?.id, + leading: AccountPfcGestureDetector( + uname: member.account.name, + child: ProfilePictureWidget( + fileId: member.account.profile.picture?.id, + ), ), title: Row( spacing: 6, diff --git a/lib/screens/realm/realm_detail.dart b/lib/screens/realm/realm_detail.dart index c3a65c52..71304923 100644 --- a/lib/screens/realm/realm_detail.dart +++ b/lib/screens/realm/realm_detail.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:island/models/chat.dart'; import 'package:island/services/color.dart'; import 'package:island/services/responsive.dart'; +import 'package:island/widgets/account/account_pfc.dart'; import 'package:island/widgets/account/status.dart'; import 'package:island/widgets/post/post_list.dart'; import 'package:palette_generator/palette_generator.dart'; @@ -658,8 +659,11 @@ class _RealmMemberListSheet extends HookConsumerWidget { final member = data.items[index]; return ListTile( contentPadding: EdgeInsets.only(left: 16, right: 12), - leading: ProfilePictureWidget( - fileId: member.account!.profile.picture?.id, + leading: AccountPfcGestureDetector( + uname: member.account!.name, + child: ProfilePictureWidget( + fileId: member.account!.profile.picture?.id, + ), ), title: Row( spacing: 6,