getMessageAbstract static method

String getMessageAbstract(
  1. MessageInfo? messageInfo,
  2. BuildContext context, {
  3. bool showMergedTitle = false,
})

Implementation

static String getMessageAbstract(MessageInfo? messageInfo, BuildContext context, {bool showMergedTitle = false}) {
  if (messageInfo == null) return '';

  if (!context.mounted) {
    return '';
  }

  AtomicLocalizations? localizations = AtomicLocalizations.of(context);

  switch (messageInfo.messageType) {
    case MessageType.text:
      return messageInfo.messageBody?.text ?? '';

    case MessageType.image:
      return localizations.messageTypeImage;

    case MessageType.sound:
      return localizations.messageTypeVoice;

    case MessageType.file:
      return localizations.messageTypeFile;

    case MessageType.video:
      return localizations.messageTypeVideo;

    case MessageType.face:
      return localizations.messageTypeSticker;

    case MessageType.custom:
      final customMessage = messageInfo.messageBody?.customMessage;
      if (customMessage == null) {
        return localizations.messageTypeCustom;
      }

      CallingMessageDataProvider provider = CallingMessageDataProvider(messageInfo, context);
      if (provider.isCallingSignal) {
        return provider.content;
      }

      final customInfo = ChatUtil.jsonData2Dictionary(customMessage.data);
      if (customInfo != null && customInfo['businessID'] == 'group_create') {
        final sender = customInfo['opUser'] ?? '';
        final cmd = customInfo['cmd'] is int ? customInfo['cmd'] : 0;
        if (cmd == 1) {
          return '$sender ${localizations.createCommunity}';
        } else {
          return '$sender ${localizations.createGroupTips}';
        }
      }

      return localizations.messageTypeCustom;

    case MessageType.system:
      return getSystemInfoDisplayString(messageInfo.messageBody?.systemMessage ?? [], context);

    case MessageType.merged:
      if (showMergedTitle) {
        final title = messageInfo.messageBody?.mergedMessage?.title;
        if (title != null && title.isNotEmpty) {
          return title;
        }
      }
      return '[${localizations.chatHistory}]';

    default:
      return '';
  }
}