getLastConversationMessage static method

String getLastConversationMessage(
  1. Conversation conversation,
  2. BuildContext context
)

Implementation

static String getLastConversationMessage(
    Conversation conversation, BuildContext context) {
  String? messageCategory = conversation.lastMessage?.category;
  String subtitle;
  switch (messageCategory) {
    case MessageCategoryConstants.message:
      subtitle = getLastMessage(conversation, context);
      break;
    case MessageCategoryConstants.custom:
      subtitle = getLastCustomMessage(conversation, context);
      break;
    case MessageCategoryConstants.action:
      subtitle = getLastActionMessage(conversation, context);
      break;
    case MessageCategoryConstants.call:
      subtitle = getLastCallMessage(conversation, context);
      break;
    case MessageCategoryConstants.interactive:
      //TODO: appropriate implement interactive message subtitle
      // subtitle = getLastInteractiveMessage(conversation, context);
      subtitle = Translations.of(context).unsupportedMessageType;
      break;
    case MessageCategoryConstants.card:
      final cardMsg = conversation.lastMessage as CardMessage?;
      subtitle = cardMsg?.getText()?.isNotEmpty == true
          ? cardMsg!.getText()!
          : Translations.of(context).cardMessage;
      break;
    case MessageCategoryConstants.agentic:
      // Agent (agentic/assistant) last-message preview. The text lives on the
      // AIAssistantMessage; fall back to a localized label when it's empty
      // (previously fell through to the raw message type).
      final agentMsg = conversation.lastMessage;
      final agentText =
          (agentMsg is AIAssistantMessage) ? (agentMsg.text ?? '') : '';
      subtitle = agentText.isNotEmpty
          ? agentText
          : Translations.of(context).aiAgentMessage;
      break;
    default:
      subtitle = conversation.lastMessage!.type;
      break;
  }

  return subtitle;
}