getBubbleStyle static method

CometChatMessageBubbleStyleData? getBubbleStyle(
  1. BaseMessage message,
  2. CometChatOutgoingMessageBubbleStyle? outgoingMessageBubbleStyle,
  3. CometChatIncomingMessageBubbleStyle? incomingMessageBubbleStyle,
  4. CometChatColorPalette colorPalette,
  5. CometChatTypography typography,
  6. CometChatSpacing spacing,
)

Implementation

static CometChatMessageBubbleStyleData? getBubbleStyle(
  BaseMessage message,
  CometChatOutgoingMessageBubbleStyle? outgoingMessageBubbleStyle,
  CometChatIncomingMessageBubbleStyle? incomingMessageBubbleStyle,
  CometChatColorPalette colorPalette,
  CometChatTypography typography,
  CometChatSpacing spacing,
) {
  bool isSent = message.sender?.uid == CometChatUIKit.loggedInUser?.uid;
  if (message.deletedAt != null) {
    return CometChatMessageBubbleStyleData(
      backgroundColor: isSent
          ? outgoingMessageBubbleStyle?.deletedBubbleStyle?.backgroundColor
          : incomingMessageBubbleStyle?.deletedBubbleStyle?.backgroundColor,
      border: isSent
          ? outgoingMessageBubbleStyle?.deletedBubbleStyle?.border
          : incomingMessageBubbleStyle?.deletedBubbleStyle?.border,
      borderRadius: isSent
          ? outgoingMessageBubbleStyle?.deletedBubbleStyle?.borderRadius
          : incomingMessageBubbleStyle?.deletedBubbleStyle?.borderRadius,
      threadedMessageIndicatorIconColor: isSent
          ? outgoingMessageBubbleStyle
                ?.deletedBubbleStyle
                ?.threadedMessageIndicatorIconColor
          : incomingMessageBubbleStyle
                ?.deletedBubbleStyle
                ?.threadedMessageIndicatorIconColor,
      messageBubbleAvatarStyle: isSent
          ? outgoingMessageBubbleStyle
                ?.deletedBubbleStyle
                ?.messageBubbleAvatarStyle
          : incomingMessageBubbleStyle
                ?.deletedBubbleStyle
                ?.messageBubbleAvatarStyle,
      senderNameTextStyle:
          incomingMessageBubbleStyle?.deletedBubbleStyle?.senderNameTextStyle,
      messageReceiptStyle:
          outgoingMessageBubbleStyle?.deletedBubbleStyle?.messageReceiptStyle,
      messageBubbleDateStyle: isSent
          ? outgoingMessageBubbleStyle
                ?.deletedBubbleStyle
                ?.messageBubbleDateStyle
          : incomingMessageBubbleStyle
                ?.deletedBubbleStyle
                ?.messageBubbleDateStyle,
      messageBubbleBackgroundImage: isSent
          ? outgoingMessageBubbleStyle
                ?.deletedBubbleStyle
                ?.messageBubbleBackgroundImage
          : incomingMessageBubbleStyle
                ?.deletedBubbleStyle
                ?.messageBubbleBackgroundImage,
      threadedMessageIndicatorTextStyle: isSent
          ? outgoingMessageBubbleStyle
                ?.deletedBubbleStyle
                ?.threadedMessageIndicatorTextStyle
          : incomingMessageBubbleStyle
                ?.deletedBubbleStyle
                ?.threadedMessageIndicatorTextStyle,
    );
  }

  String key = "${message.category}${message.type}";
  if (key ==
          MessageCategoryConstants.action +
              MessageTypeConstants.groupActions ||
      key == MessageCategoryConstants.call + CallTypeConstants.audioCall ||
      key == MessageCategoryConstants.call + CallTypeConstants.videoCall) {
    return CometChatMessageBubbleStyleData(
      backgroundColor: colorPalette.transparent,
    );
  }
  CometChatMessageBubbleStyleData? messageBubbleStyleData;
  switch (key) {
    case (MessageCategoryConstants.message + MessageTypeConstants.text):
      messageBubbleStyleData = CometChatMessageBubbleStyleData(
        backgroundColor: isSent
            ? outgoingMessageBubbleStyle?.textBubbleStyle?.backgroundColor
            : incomingMessageBubbleStyle?.textBubbleStyle?.backgroundColor,
        border: isSent
            ? outgoingMessageBubbleStyle?.textBubbleStyle?.border
            : incomingMessageBubbleStyle?.textBubbleStyle?.border,
        borderRadius: isSent
            ? getSentTextMediaBorderRadiusGeometry(
                message,
                outgoingMessageBubbleStyle?.textBubbleStyle?.borderRadius,
                colorPalette,
                typography,
                spacing,
              )
            : incomingMessageBubbleStyle?.textBubbleStyle?.borderRadius,
        threadedMessageIndicatorIconColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.textBubbleStyle
                  ?.threadedMessageIndicatorIconColor
            : incomingMessageBubbleStyle
                  ?.textBubbleStyle
                  ?.threadedMessageIndicatorIconColor,
        messageBubbleAvatarStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.textBubbleStyle
                  ?.messageBubbleAvatarStyle
            : incomingMessageBubbleStyle
                  ?.textBubbleStyle
                  ?.messageBubbleAvatarStyle,
        senderNameTextStyle:
            incomingMessageBubbleStyle?.textBubbleStyle?.senderNameTextStyle,
        messageReceiptStyle:
            outgoingMessageBubbleStyle?.textBubbleStyle?.messageReceiptStyle,
        messageBubbleDateStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.textBubbleStyle
                  ?.messageBubbleDateStyle
            : incomingMessageBubbleStyle
                  ?.textBubbleStyle
                  ?.messageBubbleDateStyle,
        messageBubbleBackgroundImage: isSent
            ? outgoingMessageBubbleStyle
                  ?.textBubbleStyle
                  ?.messageBubbleBackgroundImage
            : incomingMessageBubbleStyle
                  ?.textBubbleStyle
                  ?.messageBubbleBackgroundImage,
        threadedMessageIndicatorTextStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.textBubbleStyle
                  ?.threadedMessageIndicatorTextStyle
            : incomingMessageBubbleStyle
                  ?.textBubbleStyle
                  ?.threadedMessageIndicatorTextStyle,
      );
      break;
    case (MessageCategoryConstants.message + MessageTypeConstants.image):
      messageBubbleStyleData = CometChatMessageBubbleStyleData(
        backgroundColor: isSent
            ? outgoingMessageBubbleStyle?.imageBubbleStyle?.backgroundColor
            : incomingMessageBubbleStyle?.imageBubbleStyle?.backgroundColor,
        border: isSent
            ? outgoingMessageBubbleStyle?.imageBubbleStyle?.border
            : incomingMessageBubbleStyle?.imageBubbleStyle?.border,
        borderRadius: isSent
            ? getSentTextMediaBorderRadiusGeometry(
                message,
                outgoingMessageBubbleStyle?.imageBubbleStyle?.borderRadius,
                colorPalette,
                typography,
                spacing,
              )
            : incomingMessageBubbleStyle?.imageBubbleStyle?.borderRadius,
        threadedMessageIndicatorIconColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.imageBubbleStyle
                  ?.threadedMessageIndicatorIconColor
            : incomingMessageBubbleStyle
                  ?.imageBubbleStyle
                  ?.threadedMessageIndicatorIconColor,
        messageBubbleAvatarStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.imageBubbleStyle
                  ?.messageBubbleAvatarStyle
            : incomingMessageBubbleStyle
                  ?.imageBubbleStyle
                  ?.messageBubbleAvatarStyle,
        senderNameTextStyle:
            incomingMessageBubbleStyle?.imageBubbleStyle?.senderNameTextStyle,
        messageReceiptStyle:
            outgoingMessageBubbleStyle?.imageBubbleStyle?.messageReceiptStyle,
        messageBubbleDateStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.imageBubbleStyle
                  ?.messageBubbleDateStyle
            : incomingMessageBubbleStyle
                  ?.imageBubbleStyle
                  ?.messageBubbleDateStyle,
        messageBubbleBackgroundImage: isSent
            ? outgoingMessageBubbleStyle
                  ?.imageBubbleStyle
                  ?.messageBubbleBackgroundImage
            : incomingMessageBubbleStyle
                  ?.imageBubbleStyle
                  ?.messageBubbleBackgroundImage,
        threadedMessageIndicatorTextStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.imageBubbleStyle
                  ?.threadedMessageIndicatorTextStyle
            : incomingMessageBubbleStyle
                  ?.imageBubbleStyle
                  ?.threadedMessageIndicatorTextStyle,
      );
      break;
    case (MessageCategoryConstants.message + MessageTypeConstants.file):
      messageBubbleStyleData = CometChatMessageBubbleStyleData(
        backgroundColor: isSent
            ? outgoingMessageBubbleStyle?.fileBubbleStyle?.backgroundColor
            : incomingMessageBubbleStyle?.fileBubbleStyle?.backgroundColor,
        border: isSent
            ? outgoingMessageBubbleStyle?.fileBubbleStyle?.border
            : incomingMessageBubbleStyle?.fileBubbleStyle?.border,
        borderRadius: isSent
            ? getSentTextMediaBorderRadiusGeometry(
                message,
                outgoingMessageBubbleStyle?.fileBubbleStyle?.borderRadius,
                colorPalette,
                typography,
                spacing,
              )
            : incomingMessageBubbleStyle?.fileBubbleStyle?.borderRadius,
        threadedMessageIndicatorIconColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.fileBubbleStyle
                  ?.threadedMessageIndicatorIconColor
            : incomingMessageBubbleStyle
                  ?.fileBubbleStyle
                  ?.threadedMessageIndicatorIconColor,
        messageBubbleAvatarStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.fileBubbleStyle
                  ?.messageBubbleAvatarStyle
            : incomingMessageBubbleStyle
                  ?.fileBubbleStyle
                  ?.messageBubbleAvatarStyle,
        senderNameTextStyle:
            incomingMessageBubbleStyle?.fileBubbleStyle?.senderNameTextStyle,
        messageReceiptStyle:
            outgoingMessageBubbleStyle?.fileBubbleStyle?.messageReceiptStyle,
        messageBubbleDateStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.fileBubbleStyle
                  ?.messageBubbleDateStyle
            : incomingMessageBubbleStyle
                  ?.fileBubbleStyle
                  ?.messageBubbleDateStyle,
        messageBubbleBackgroundImage: isSent
            ? outgoingMessageBubbleStyle
                  ?.fileBubbleStyle
                  ?.messageBubbleBackgroundImage
            : incomingMessageBubbleStyle
                  ?.fileBubbleStyle
                  ?.messageBubbleBackgroundImage,
        threadedMessageIndicatorTextStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.fileBubbleStyle
                  ?.threadedMessageIndicatorTextStyle
            : incomingMessageBubbleStyle
                  ?.fileBubbleStyle
                  ?.threadedMessageIndicatorTextStyle,
      );
      break;
    case (MessageCategoryConstants.message + MessageTypeConstants.video):
      messageBubbleStyleData = CometChatMessageBubbleStyleData(
        backgroundColor: isSent
            ? outgoingMessageBubbleStyle?.videoBubbleStyle?.backgroundColor
            : incomingMessageBubbleStyle?.videoBubbleStyle?.backgroundColor,
        border: isSent
            ? outgoingMessageBubbleStyle?.videoBubbleStyle?.border
            : incomingMessageBubbleStyle?.videoBubbleStyle?.border,
        borderRadius: isSent
            ? getSentTextMediaBorderRadiusGeometry(
                message,
                outgoingMessageBubbleStyle?.videoBubbleStyle?.borderRadius,
                colorPalette,
                typography,
                spacing,
              )
            : incomingMessageBubbleStyle?.videoBubbleStyle?.borderRadius,
        threadedMessageIndicatorIconColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.videoBubbleStyle
                  ?.threadedMessageIndicatorIconColor
            : incomingMessageBubbleStyle
                  ?.videoBubbleStyle
                  ?.threadedMessageIndicatorIconColor,
        messageBubbleAvatarStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.videoBubbleStyle
                  ?.messageBubbleAvatarStyle
            : incomingMessageBubbleStyle
                  ?.videoBubbleStyle
                  ?.messageBubbleAvatarStyle,
        senderNameTextStyle:
            incomingMessageBubbleStyle?.videoBubbleStyle?.senderNameTextStyle,
        messageReceiptStyle:
            outgoingMessageBubbleStyle?.videoBubbleStyle?.messageReceiptStyle,
        messageBubbleDateStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.videoBubbleStyle
                  ?.messageBubbleDateStyle
            : incomingMessageBubbleStyle
                  ?.videoBubbleStyle
                  ?.messageBubbleDateStyle,
        messageBubbleBackgroundImage: isSent
            ? outgoingMessageBubbleStyle
                  ?.videoBubbleStyle
                  ?.messageBubbleBackgroundImage
            : incomingMessageBubbleStyle
                  ?.videoBubbleStyle
                  ?.messageBubbleBackgroundImage,
        threadedMessageIndicatorTextStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.videoBubbleStyle
                  ?.threadedMessageIndicatorTextStyle
            : incomingMessageBubbleStyle
                  ?.videoBubbleStyle
                  ?.threadedMessageIndicatorTextStyle,
      );
      break;
    case (MessageCategoryConstants.message + MessageTypeConstants.audio):
      messageBubbleStyleData = CometChatMessageBubbleStyleData(
        backgroundColor: isSent
            ? outgoingMessageBubbleStyle?.audioBubbleStyle?.backgroundColor
            : incomingMessageBubbleStyle?.audioBubbleStyle?.backgroundColor,
        border: isSent
            ? outgoingMessageBubbleStyle?.audioBubbleStyle?.border
            : incomingMessageBubbleStyle?.audioBubbleStyle?.border,
        borderRadius: isSent
            ? getSentTextMediaBorderRadiusGeometry(
                message,
                outgoingMessageBubbleStyle?.audioBubbleStyle?.borderRadius,
                colorPalette,
                typography,
                spacing,
              )
            : incomingMessageBubbleStyle?.audioBubbleStyle?.borderRadius,
        threadedMessageIndicatorIconColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.audioBubbleStyle
                  ?.threadedMessageIndicatorIconColor
            : incomingMessageBubbleStyle
                  ?.audioBubbleStyle
                  ?.threadedMessageIndicatorIconColor,
        messageBubbleAvatarStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.audioBubbleStyle
                  ?.messageBubbleAvatarStyle
            : incomingMessageBubbleStyle
                  ?.audioBubbleStyle
                  ?.messageBubbleAvatarStyle,
        senderNameTextStyle:
            incomingMessageBubbleStyle?.audioBubbleStyle?.senderNameTextStyle,
        messageReceiptStyle:
            outgoingMessageBubbleStyle?.audioBubbleStyle?.messageReceiptStyle,
        messageBubbleDateStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.audioBubbleStyle
                  ?.messageBubbleDateStyle
            : incomingMessageBubbleStyle
                  ?.audioBubbleStyle
                  ?.messageBubbleDateStyle,
        messageBubbleBackgroundImage: isSent
            ? outgoingMessageBubbleStyle
                  ?.audioBubbleStyle
                  ?.messageBubbleBackgroundImage
            : incomingMessageBubbleStyle
                  ?.audioBubbleStyle
                  ?.messageBubbleBackgroundImage,
        threadedMessageIndicatorTextStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.audioBubbleStyle
                  ?.threadedMessageIndicatorTextStyle
            : incomingMessageBubbleStyle
                  ?.audioBubbleStyle
                  ?.threadedMessageIndicatorTextStyle,
      );
      break;
    case (MessageCategoryConstants.custom + ExtensionType.extensionPoll):
      messageBubbleStyleData = CometChatMessageBubbleStyleData(
        backgroundColor: isSent
            ? outgoingMessageBubbleStyle?.pollsBubbleStyle?.backgroundColor
            : incomingMessageBubbleStyle?.pollsBubbleStyle?.backgroundColor,
        border: isSent
            ? outgoingMessageBubbleStyle?.pollsBubbleStyle?.border
            : incomingMessageBubbleStyle?.pollsBubbleStyle?.border,
        borderRadius: isSent
            ? outgoingMessageBubbleStyle?.pollsBubbleStyle?.borderRadius
            : incomingMessageBubbleStyle?.pollsBubbleStyle?.borderRadius,
        threadedMessageIndicatorIconColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.pollsBubbleStyle
                  ?.threadedMessageIndicatorIconColor
            : incomingMessageBubbleStyle
                  ?.pollsBubbleStyle
                  ?.threadedMessageIndicatorIconColor,
        messageBubbleAvatarStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.pollsBubbleStyle
                  ?.messageBubbleAvatarStyle
            : incomingMessageBubbleStyle
                  ?.pollsBubbleStyle
                  ?.messageBubbleAvatarStyle,
        senderNameTextStyle:
            incomingMessageBubbleStyle?.pollsBubbleStyle?.senderNameTextStyle,
        messageReceiptStyle:
            outgoingMessageBubbleStyle?.pollsBubbleStyle?.messageReceiptStyle,
        messageBubbleDateStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.pollsBubbleStyle
                  ?.messageBubbleDateStyle
            : incomingMessageBubbleStyle
                  ?.pollsBubbleStyle
                  ?.messageBubbleDateStyle,
        messageBubbleBackgroundImage: isSent
            ? outgoingMessageBubbleStyle
                  ?.pollsBubbleStyle
                  ?.messageBubbleBackgroundImage
            : incomingMessageBubbleStyle
                  ?.pollsBubbleStyle
                  ?.messageBubbleBackgroundImage,
        threadedMessageIndicatorTextStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.pollsBubbleStyle
                  ?.threadedMessageIndicatorTextStyle
            : incomingMessageBubbleStyle
                  ?.pollsBubbleStyle
                  ?.threadedMessageIndicatorTextStyle,
      );
      break;
    case (MessageCategoryConstants.custom + ExtensionType.document):
      messageBubbleStyleData = CometChatMessageBubbleStyleData(
        backgroundColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.backgroundColor
            : incomingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.backgroundColor,
        border: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.border
            : incomingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.border,
        borderRadius: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.borderRadius
            : incomingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.borderRadius,
        threadedMessageIndicatorIconColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.threadedMessageIndicatorIconColor
            : incomingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.threadedMessageIndicatorIconColor,
        messageBubbleAvatarStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.messageBubbleAvatarStyle
            : incomingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.messageBubbleAvatarStyle,
        senderNameTextStyle: incomingMessageBubbleStyle
            ?.collaborativeDocumentBubbleStyle
            ?.senderNameTextStyle,
        messageReceiptStyle: outgoingMessageBubbleStyle
            ?.collaborativeDocumentBubbleStyle
            ?.messageReceiptStyle,
        messageBubbleDateStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.messageBubbleDateStyle
            : incomingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.messageBubbleDateStyle,
        messageBubbleBackgroundImage: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.messageBubbleBackgroundImage
            : incomingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.messageBubbleBackgroundImage,
        threadedMessageIndicatorTextStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.threadedMessageIndicatorTextStyle
            : incomingMessageBubbleStyle
                  ?.collaborativeDocumentBubbleStyle
                  ?.threadedMessageIndicatorTextStyle,
      );
      break;
    case (MessageCategoryConstants.custom + ExtensionType.whiteboard):
      messageBubbleStyleData = CometChatMessageBubbleStyleData(
        backgroundColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.backgroundColor
            : incomingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.backgroundColor,
        border: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.border
            : incomingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.border,
        borderRadius: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.borderRadius
            : incomingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.borderRadius,
        threadedMessageIndicatorIconColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.threadedMessageIndicatorIconColor
            : incomingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.threadedMessageIndicatorIconColor,
        messageBubbleAvatarStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.messageBubbleAvatarStyle
            : incomingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.messageBubbleAvatarStyle,
        senderNameTextStyle: incomingMessageBubbleStyle
            ?.collaborativeWhiteboardBubbleStyle
            ?.senderNameTextStyle,
        messageReceiptStyle: outgoingMessageBubbleStyle
            ?.collaborativeWhiteboardBubbleStyle
            ?.messageReceiptStyle,
        messageBubbleDateStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.messageBubbleDateStyle
            : incomingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.messageBubbleDateStyle,
        messageBubbleBackgroundImage: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.messageBubbleBackgroundImage
            : incomingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.messageBubbleBackgroundImage,
        threadedMessageIndicatorTextStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.threadedMessageIndicatorTextStyle
            : incomingMessageBubbleStyle
                  ?.collaborativeWhiteboardBubbleStyle
                  ?.threadedMessageIndicatorTextStyle,
      );
      break;
    case (MessageCategoryConstants.custom + ExtensionType.sticker):
      messageBubbleStyleData = CometChatMessageBubbleStyleData(
        backgroundColor:
            (isSent
                ? outgoingMessageBubbleStyle
                      ?.stickerBubbleStyle
                      ?.backgroundColor
                : incomingMessageBubbleStyle
                      ?.stickerBubbleStyle
                      ?.backgroundColor) ??
            colorPalette.transparent,
        border: isSent
            ? outgoingMessageBubbleStyle?.stickerBubbleStyle?.border
            : incomingMessageBubbleStyle?.stickerBubbleStyle?.border,
        borderRadius: isSent
            ? outgoingMessageBubbleStyle?.stickerBubbleStyle?.borderRadius
            : incomingMessageBubbleStyle?.stickerBubbleStyle?.borderRadius,
        threadedMessageIndicatorIconColor: isSent
            ? outgoingMessageBubbleStyle
                  ?.stickerBubbleStyle
                  ?.threadedMessageIndicatorIconColor
            : incomingMessageBubbleStyle
                  ?.stickerBubbleStyle
                  ?.threadedMessageIndicatorIconColor,
        messageBubbleAvatarStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.stickerBubbleStyle
                  ?.messageBubbleAvatarStyle
            : incomingMessageBubbleStyle
                  ?.stickerBubbleStyle
                  ?.messageBubbleAvatarStyle,
        senderNameTextStyle: incomingMessageBubbleStyle
            ?.stickerBubbleStyle
            ?.senderNameTextStyle,
        messageReceiptStyle: outgoingMessageBubbleStyle
            ?.stickerBubbleStyle
            ?.messageReceiptStyle,
        messageBubbleDateStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.stickerBubbleStyle
                  ?.messageBubbleDateStyle
            : incomingMessageBubbleStyle
                  ?.stickerBubbleStyle
                  ?.messageBubbleDateStyle,
        messageBubbleBackgroundImage: isSent
            ? outgoingMessageBubbleStyle
                  ?.stickerBubbleStyle
                  ?.messageBubbleBackgroundImage
            : incomingMessageBubbleStyle
                  ?.stickerBubbleStyle
                  ?.messageBubbleBackgroundImage,
        threadedMessageIndicatorTextStyle: isSent
            ? outgoingMessageBubbleStyle
                  ?.stickerBubbleStyle
                  ?.threadedMessageIndicatorTextStyle
            : incomingMessageBubbleStyle
                  ?.stickerBubbleStyle
                  ?.threadedMessageIndicatorTextStyle,
      );
      break;
    case (MessageCategoryConstants.custom + MessageTypeConstants.meeting):
      CustomMessage msg = message as CustomMessage;
      String? callType;
      if (msg.customData != null &&
          msg.customData?.containsKey('callType') == true) {
        callType = msg.customData?['callType'];
      }
      if (callType == CallTypeConstants.audioCall) {
        messageBubbleStyleData = CometChatMessageBubbleStyleData(
          backgroundColor: isSent
              ? outgoingMessageBubbleStyle
                        ?.voiceCallBubbleStyle
                        ?.backgroundColor ??
                    colorPalette.primary
              : incomingMessageBubbleStyle
                        ?.voiceCallBubbleStyle
                        ?.backgroundColor ??
                    colorPalette.neutral300,
          border: isSent
              ? outgoingMessageBubbleStyle?.voiceCallBubbleStyle?.border
              : incomingMessageBubbleStyle?.voiceCallBubbleStyle?.border,
          borderRadius: isSent
              ? outgoingMessageBubbleStyle?.voiceCallBubbleStyle?.borderRadius
              : incomingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.borderRadius,
          threadedMessageIndicatorIconColor: isSent
              ? outgoingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.threadedMessageIndicatorIconColor
              : incomingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.threadedMessageIndicatorIconColor,
          messageBubbleAvatarStyle: isSent
              ? outgoingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.messageBubbleAvatarStyle
              : incomingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.messageBubbleAvatarStyle,
          senderNameTextStyle: incomingMessageBubbleStyle
              ?.voiceCallBubbleStyle
              ?.senderNameTextStyle,
          messageReceiptStyle: outgoingMessageBubbleStyle
              ?.voiceCallBubbleStyle
              ?.messageReceiptStyle,
          messageBubbleDateStyle: isSent
              ? outgoingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.messageBubbleDateStyle
              : incomingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.messageBubbleDateStyle,
          messageBubbleBackgroundImage: isSent
              ? outgoingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.messageBubbleBackgroundImage
              : incomingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.messageBubbleBackgroundImage,
          threadedMessageIndicatorTextStyle: isSent
              ? outgoingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.threadedMessageIndicatorTextStyle
              : incomingMessageBubbleStyle
                    ?.voiceCallBubbleStyle
                    ?.threadedMessageIndicatorTextStyle,
        );
      } else {
        messageBubbleStyleData = CometChatMessageBubbleStyleData(
          backgroundColor: isSent
              ? outgoingMessageBubbleStyle
                        ?.videoCallBubbleStyle
                        ?.backgroundColor ??
                    colorPalette.primary
              : incomingMessageBubbleStyle
                        ?.videoCallBubbleStyle
                        ?.backgroundColor ??
                    colorPalette.neutral300,
          border: isSent
              ? outgoingMessageBubbleStyle?.videoCallBubbleStyle?.border
              : incomingMessageBubbleStyle?.videoCallBubbleStyle?.border,
          borderRadius: isSent
              ? outgoingMessageBubbleStyle?.videoCallBubbleStyle?.borderRadius
              : incomingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.borderRadius,
          threadedMessageIndicatorIconColor: isSent
              ? outgoingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.threadedMessageIndicatorIconColor
              : incomingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.threadedMessageIndicatorIconColor,
          messageBubbleAvatarStyle: isSent
              ? outgoingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.messageBubbleAvatarStyle
              : incomingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.messageBubbleAvatarStyle,
          senderNameTextStyle: incomingMessageBubbleStyle
              ?.videoCallBubbleStyle
              ?.senderNameTextStyle,
          messageReceiptStyle: outgoingMessageBubbleStyle
              ?.videoCallBubbleStyle
              ?.messageReceiptStyle,
          messageBubbleDateStyle: isSent
              ? outgoingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.messageBubbleDateStyle
              : incomingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.messageBubbleDateStyle,
          messageBubbleBackgroundImage: isSent
              ? outgoingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.messageBubbleBackgroundImage
              : incomingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.messageBubbleBackgroundImage,
          threadedMessageIndicatorTextStyle: isSent
              ? outgoingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.threadedMessageIndicatorTextStyle
              : incomingMessageBubbleStyle
                    ?.videoCallBubbleStyle
                    ?.threadedMessageIndicatorTextStyle,
        );
      }
      break;
  }

  final defaultMessageBubbleStyleData = CometChatMessageBubbleStyleData(
    backgroundColor: isSent
        ? outgoingMessageBubbleStyle?.backgroundColor ?? colorPalette.primary
        : incomingMessageBubbleStyle?.backgroundColor ??
              colorPalette.neutral300,
    border: isSent
        ? outgoingMessageBubbleStyle?.border
        : incomingMessageBubbleStyle?.border,
    borderRadius: isSent
        ? outgoingMessageBubbleStyle?.borderRadius
        : incomingMessageBubbleStyle?.borderRadius,
    threadedMessageIndicatorIconColor: isSent
        ? outgoingMessageBubbleStyle?.threadedMessageIndicatorIconColor
        : incomingMessageBubbleStyle?.threadedMessageIndicatorIconColor,
    messageBubbleAvatarStyle: isSent
        ? outgoingMessageBubbleStyle?.messageBubbleAvatarStyle
        : incomingMessageBubbleStyle?.messageBubbleAvatarStyle,
    senderNameTextStyle: incomingMessageBubbleStyle?.senderNameTextStyle,
    messageReceiptStyle: outgoingMessageBubbleStyle?.messageReceiptStyle,
    messageBubbleDateStyle: isSent
        ? outgoingMessageBubbleStyle?.messageBubbleDateStyle
        : incomingMessageBubbleStyle?.messageBubbleDateStyle,
    messageBubbleBackgroundImage: isSent
        ? outgoingMessageBubbleStyle?.messageBubbleBackgroundImage
        : incomingMessageBubbleStyle?.messageBubbleBackgroundImage,
    threadedMessageIndicatorTextStyle: isSent
        ? outgoingMessageBubbleStyle?.threadedMessageIndicatorTextStyle
        : incomingMessageBubbleStyle?.threadedMessageIndicatorTextStyle,
  );

  return messageBubbleStyleData?.mergeIfNull(defaultMessageBubbleStyleData);
}