Skip to content

Commit edb1d6f

Browse files
committed
msglist [nfc]: Extract _SenderRow widget
1 parent e119425 commit edb1d6f

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
@@ -1322,29 +1322,26 @@ String formatHeaderDate(
13221322
}
13231323
}
13241324

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

1332-
final MessageListMessageItem item;
1328+
class _SenderRow extends StatelessWidget {
1329+
const _SenderRow({required this.message});
1330+
1331+
final Message message;
13331332

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

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

13901402
final localizations = ZulipLocalizations.of(context);
13911403
String? editStateText;
@@ -1414,9 +1426,7 @@ class MessageWithPossibleSender extends StatelessWidget {
14141426
child: Padding(
14151427
padding: const EdgeInsets.symmetric(vertical: 4),
14161428
child: Column(children: [
1417-
if (senderRow != null)
1418-
Padding(padding: const EdgeInsets.fromLTRB(16, 2, 16, 0),
1419-
child: senderRow),
1429+
if (item.showSender) _SenderRow(message: message),
14201430
Row(
14211431
crossAxisAlignment: CrossAxisAlignment.baseline,
14221432
textBaseline: localizedTextBaseline(context),
@@ -1444,6 +1454,3 @@ class MessageWithPossibleSender extends StatelessWidget {
14441454
])));
14451455
}
14461456
}
1447-
1448-
// TODO(i18n): web seems to ignore locale in formatting time, but we could do better
1449-
final _kMessageTimestampFormat = DateFormat('h:mm aa', 'en_US');

0 commit comments

Comments
 (0)