channelListMessageSummary function
String
channelListMessageSummary(
- Message? message, {
- NexconnChatUILocalizations? localizations,
- ChannelType? channelType,
- String? currentUserId,
Implementation
String channelListMessageSummary(
Message? message, {
NexconnChatUILocalizations? localizations,
ChannelType? channelType,
String? currentUserId,
}) {
final l10n = localizations ?? NexconnChatUILocalizationsEn();
if (message == null) {
if (channelType == ChannelType.system) {
return '';
}
return l10n.chatMessageListEmpty;
}
String summary;
if (message is GIFMessage) {
summary = l10n.messageSummaryImage;
} else if (message is CombineMessage) {
summary = '[${l10n.combineMessageChatHistoryLabel}]';
} else {
summary = messageSummary(message, localizations: l10n);
}
summary = summary
.replaceAll(RegExp(r'[\r\n]+'), ' ')
.replaceAll(RegExp(r'\s{2,}'), ' ')
.trim();
final isGroupChannel = channelType == ChannelType.group;
final isReceivedMessage =
_messageDirectionOf(message) != MessageDirection.send;
final senderId = _senderUserIdOf(message)?.trim();
final isCurrentUser =
currentUserId != null &&
currentUserId.isNotEmpty &&
senderId != null &&
senderId.isNotEmpty &&
senderId == currentUserId;
if (!isGroupChannel || !isReceivedMessage || isCurrentUser) {
return summary;
}
final senderName =
_messageUserInfoOf(message)?.alias?.trim() ??
_messageUserInfoOf(message)?.name?.trim() ??
senderId;
if (senderName == null || senderName.isEmpty) {
return summary;
}
final separator = l10n.localeName.startsWith('zh') ? ':' : ': ';
return '$senderName$separator$summary';
}