Skip to content

Commit aabe13d

Browse files
committed
msglist [nfc]: Extract _SenderRow widget
1 parent 117d59a commit aabe13d

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

lib/widgets/message_list.dart

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1324,29 +1324,26 @@ String formatHeaderDate(
13241324
}
13251325
}
13261326

1327-
/// A Zulip message, showing the sender's name and avatar if specified.
1328-
// Design referenced from:
1329-
// - https://github.com/zulip/zulip-mobile/issues/5511
1330-
// - https://www.figma.com/file/1JTNtYo9memgW7vV6d0ygq/Zulip-Mobile?node-id=538%3A20849&mode=dev
1331-
class MessageWithPossibleSender extends StatelessWidget {
1332-
const MessageWithPossibleSender({super.key, required this.item});
1327+
// TODO(i18n): web seems to ignore locale in formatting time, but we could do better
1328+
final _kMessageTimestampFormat = DateFormat('h:mm aa', 'en_US');
13331329

1334-
final MessageListMessageItem item;
1330+
class _SenderRow extends StatelessWidget {
1331+
const _SenderRow({required this.message});
1332+
1333+
final Message message;
13351334

13361335
@override
13371336
Widget build(BuildContext context) {
13381337
final store = PerAccountStoreWidget.of(context);
13391338
final messageListTheme = MessageListTheme.of(context);
13401339
final designVariables = DesignVariables.of(context);
13411340

1342-
final message = item.message;
13431341
final sender = store.getUser(message.senderId);
1344-
1345-
Widget? senderRow;
1346-
if (item.showSender) {
1347-
final time = _kMessageTimestampFormat
1348-
.format(DateTime.fromMillisecondsSinceEpoch(1000 * message.timestamp));
1349-
senderRow = Row(
1342+
final time = _kMessageTimestampFormat
1343+
.format(DateTime.fromMillisecondsSinceEpoch(1000 * message.timestamp));
1344+
return Padding(
1345+
padding: const EdgeInsets.fromLTRB(16, 2, 16, 0),
1346+
child: Row(
13501347
mainAxisAlignment: MainAxisAlignment.spaceBetween,
13511348
crossAxisAlignment: CrossAxisAlignment.baseline,
13521349
textBaseline: localizedTextBaseline(context),
@@ -1386,8 +1383,23 @@ class MessageWithPossibleSender extends StatelessWidget {
13861383
height: (18 / 16),
13871384
fontFeatures: const [FontFeature.enable('c2sc'), FontFeature.enable('smcp')],
13881385
).merge(weightVariableTextStyle(context))),
1389-
]);
1390-
}
1386+
]));
1387+
}
1388+
}
1389+
1390+
/// A Zulip message, showing the sender's name and avatar if specified.
1391+
// Design referenced from:
1392+
// - https://github.com/zulip/zulip-mobile/issues/5511
1393+
// - https://www.figma.com/file/1JTNtYo9memgW7vV6d0ygq/Zulip-Mobile?node-id=538%3A20849&mode=dev
1394+
class MessageWithPossibleSender extends StatelessWidget {
1395+
const MessageWithPossibleSender({super.key, required this.item});
1396+
1397+
final MessageListMessageItem item;
1398+
1399+
@override
1400+
Widget build(BuildContext context) {
1401+
final designVariables = DesignVariables.of(context);
1402+
final message = item.message;
13911403

13921404
final localizations = ZulipLocalizations.of(context);
13931405
String? editStateText;
@@ -1416,9 +1428,7 @@ class MessageWithPossibleSender extends StatelessWidget {
14161428
child: Padding(
14171429
padding: const EdgeInsets.symmetric(vertical: 4),
14181430
child: Column(children: [
1419-
if (senderRow != null)
1420-
Padding(padding: const EdgeInsets.fromLTRB(16, 2, 16, 0),
1421-
child: senderRow),
1431+
if (item.showSender) _SenderRow(message: message),
14221432
Row(
14231433
crossAxisAlignment: CrossAxisAlignment.baseline,
14241434
textBaseline: localizedTextBaseline(context),
@@ -1446,6 +1456,3 @@ class MessageWithPossibleSender extends StatelessWidget {
14461456
])));
14471457
}
14481458
}
1449-
1450-
// TODO(i18n): web seems to ignore locale in formatting time, but we could do better
1451-
final _kMessageTimestampFormat = DateFormat('h:mm aa', 'en_US');

0 commit comments

Comments
 (0)