getLastCallMessage static method

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

Implementation

static String getLastCallMessage(
    Conversation conversation, BuildContext context) {
  Call call = conversation.lastMessage as Call;
  User? conversationWithUser;
  Group? conversationWithGroup;

  if (conversation.conversationWith is User) {
    conversationWithUser = conversation.conversationWith as User;
  } else if (conversation.conversationWith is Group) {
    conversationWithGroup = conversation.conversationWith as Group;
  }

  String subtitle = call.type;
  Group? callInitiatorGroup;
  User? callInitiatorUser;
  if (call.callInitiator is User) {
    callInitiatorUser = call.callInitiator as User;
  } else {
    callInitiatorGroup = call.callInitiator as Group;
  }

  if (call.callStatus == CallStatusConstants.ongoing) {
    subtitle = Translations.of(context).ongoingCall;
  } else if (call.callStatus == CallStatusConstants.ended ||
      call.callStatus == CallStatusConstants.initiated) {
    if ((callInitiatorUser != null &&
            conversationWithUser != null &&
            callInitiatorUser.uid == conversationWithUser.uid) ||
        (callInitiatorGroup != null &&
            conversationWithGroup != null &&
            callInitiatorGroup.guid == conversationWithGroup.guid)) {
      if (call.type == MessageTypeConstants.audio) {
        subtitle = Translations.of(context).incomingAudioCall;
      } else {
        subtitle = Translations.of(context).incomingVideoCall;
      }
    } else {
      if (call.type == MessageTypeConstants.audio) {
        subtitle = Translations.of(context).outgoingAudioCall;
      } else {
        subtitle = Translations.of(context).outgoingVdeoCall;
      }
    }
  } else if (call.callStatus == CallStatusConstants.cancelled ||
      call.callStatus == CallStatusConstants.unanswered ||
      call.callStatus == CallStatusConstants.rejected ||
      call.callStatus == CallStatusConstants.busy) {
    if ((callInitiatorUser != null &&
            conversationWithUser != null &&
            callInitiatorUser.uid == conversationWithUser.uid) ||
        (callInitiatorGroup != null &&
            conversationWithGroup != null &&
            callInitiatorGroup.guid == conversationWithGroup.guid)) {
      if (call.type == MessageTypeConstants.audio) {
        subtitle = Translations.of(context).missedVoiceCall;
      } else {
        subtitle = Translations.of(context).missedVideoCall;
      }
    } else {
      if (call.type == MessageTypeConstants.audio) {
        subtitle = Translations.of(context).unansweredAudioCall;
      } else {
        subtitle = Translations.of(context).unansweredVideoCall;
      }
    }
  }
  return subtitle;
}