Skip to content

Commit 9e2d9e5

Browse files
PIG208gnprice
authored andcommitted
msglist [nfc]: Extract _SenderRow widget
1 parent 5fcf6e0 commit 9e2d9e5

File tree

1 file changed

+30
-22
lines changed

1 file changed

+30
-22
lines changed

lib/widgets/message_list.dart

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,29 +1338,26 @@ String formatHeaderDate(
13381338
}
13391339
}
13401340

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

1348-
final MessageListMessageItem item;
1344+
class _SenderRow extends StatelessWidget {
1345+
const _SenderRow({required this.message});
1346+
1347+
final Message message;
13491348

13501349
@override
13511350
Widget build(BuildContext context) {
13521351
final store = PerAccountStoreWidget.of(context);
13531352
final messageListTheme = MessageListTheme.of(context);
13541353
final designVariables = DesignVariables.of(context);
13551354

1356-
final message = item.message;
13571355
final sender = store.getUser(message.senderId);
1358-
1359-
Widget? senderRow;
1360-
if (item.showSender) {
1361-
final time = _kMessageTimestampFormat
1362-
.format(DateTime.fromMillisecondsSinceEpoch(1000 * message.timestamp));
1363-
senderRow = Row(
1356+
final time = _kMessageTimestampFormat
1357+
.format(DateTime.fromMillisecondsSinceEpoch(1000 * message.timestamp));
1358+
return Padding(
1359+
padding: const EdgeInsets.fromLTRB(16, 2, 16, 0),
1360+
child: Row(
13641361
mainAxisAlignment: MainAxisAlignment.spaceBetween,
13651362
crossAxisAlignment: CrossAxisAlignment.baseline,
13661363
textBaseline: localizedTextBaseline(context),
@@ -1400,8 +1397,23 @@ class MessageWithPossibleSender extends StatelessWidget {
14001397
height: (18 / 16),
14011398
fontFeatures: const [FontFeature.enable('c2sc'), FontFeature.enable('smcp')],
14021399
).merge(weightVariableTextStyle(context))),
1403-
]);
1404-
}
1400+
]));
1401+
}
1402+
}
1403+
1404+
/// A Zulip message, showing the sender's name and avatar if specified.
1405+
// Design referenced from:
1406+
// - https://github.com/zulip/zulip-mobile/issues/5511
1407+
// - https://www.figma.com/file/1JTNtYo9memgW7vV6d0ygq/Zulip-Mobile?node-id=538%3A20849&mode=dev
1408+
class MessageWithPossibleSender extends StatelessWidget {
1409+
const MessageWithPossibleSender({super.key, required this.item});
1410+
1411+
final MessageListMessageItem item;
1412+
1413+
@override
1414+
Widget build(BuildContext context) {
1415+
final designVariables = DesignVariables.of(context);
1416+
final message = item.message;
14051417

14061418
final localizations = ZulipLocalizations.of(context);
14071419
String? editStateText;
@@ -1430,9 +1442,8 @@ class MessageWithPossibleSender extends StatelessWidget {
14301442
child: Padding(
14311443
padding: const EdgeInsets.symmetric(vertical: 4),
14321444
child: Column(children: [
1433-
if (senderRow != null)
1434-
Padding(padding: const EdgeInsets.fromLTRB(16, 2, 16, 0),
1435-
child: senderRow),
1445+
if (item.showSender)
1446+
_SenderRow(message: message),
14361447
Row(
14371448
crossAxisAlignment: CrossAxisAlignment.baseline,
14381449
textBaseline: localizedTextBaseline(context),
@@ -1460,6 +1471,3 @@ class MessageWithPossibleSender extends StatelessWidget {
14601471
])));
14611472
}
14621473
}
1463-
1464-
// TODO(i18n): web seems to ignore locale in formatting time, but we could do better
1465-
final _kMessageTimestampFormat = DateFormat('h:mm aa', 'en_US');

0 commit comments

Comments
 (0)