Skip to content

Commit add740a

Browse files
committed
ui: Distinguish isBot: true users with a bot marker
Fixes: zulip#156
1 parent e6c531a commit add740a

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

lib/widgets/message_list.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,8 @@ class MessageWithPossibleSender extends StatelessWidget {
897897
@override
898898
Widget build(BuildContext context) {
899899
final message = item.message;
900+
final messageSender =
901+
PerAccountStoreWidget.of(context).users[message.senderId];
900902

901903
Widget? senderRow;
902904
if (item.showSender) {
@@ -926,6 +928,10 @@ class MessageWithPossibleSender extends StatelessWidget {
926928
).merge(weightVariableTextStyle(context, wght: 600,
927929
wghtIfPlatformRequestsBold: 900)),
928930
overflow: TextOverflow.ellipsis)),
931+
if (messageSender?.isBot ?? false) ...[
932+
const SizedBox(width: 8),
933+
const Icon(ZulipIcons.bot, size: 18, color: Colors.grey),
934+
],
929935
]))),
930936
const SizedBox(width: 4),
931937
Text(time,

test/example_data.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ User user({
6060
String? email,
6161
String? fullName,
6262
bool? isActive,
63+
bool? isBot,
6364
String? avatarUrl,
6465
Map<int, ProfileFieldUserData>? profileData,
6566
}) {
@@ -74,7 +75,7 @@ User user({
7475
isAdmin: false,
7576
isGuest: false,
7677
isBillingAdmin: false,
77-
isBot: false,
78+
isBot: isBot ?? false,
7879
botType: null,
7980
botOwnerId: null,
8081
role: UserRole.member,

test/widgets/message_list_test.dart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import '../model/unreads_checks.dart';
3030
import '../stdlib_checks.dart';
3131
import '../test_images.dart';
3232
import 'content_checks.dart';
33+
import 'content_test.dart';
3334
import 'dialog_checks.dart';
3435

3536
void main() {
@@ -44,6 +45,7 @@ void main() {
4445
int? messageCount,
4546
List<Message>? messages,
4647
List<ZulipStream>? streams,
48+
List<User>? users,
4749
List<Subscription>? subscriptions,
4850
UnreadMessagesSnapshot? unreadMsgs,
4951
}) async {
@@ -56,6 +58,7 @@ void main() {
5658

5759
// prepare message list data
5860
store.addUser(eg.selfUser);
61+
store.addUsers(users ?? []);
5962
assert((messageCount == null) != (messages == null));
6063
messages ??= List.generate(messageCount!, (index) {
6164
return eg.streamMessage(sender: eg.selfUser);
@@ -484,6 +487,22 @@ void main() {
484487

485488
debugNetworkImageHttpClientProvider = null;
486489
});
490+
491+
testWidgets('Bot user is distinguished by showing an icon', (tester) async {
492+
prepareBoringImageHttpClient();
493+
494+
final users = List.generate(3, (index) => eg.user(isBot: index == 0));
495+
496+
await setupMessageListPage(
497+
tester,
498+
messages: users.map((user) => eg.streamMessage(sender: user)).toList(),
499+
users: users,
500+
);
501+
502+
tester.widget(find.byIcon(ZulipIcons.bot));
503+
504+
debugNetworkImageHttpClientProvider = null;
505+
});
487506
});
488507

489508
group('Starred messages', () {

0 commit comments

Comments
 (0)