override fun get()

in azure-communication-ui/chat/src/main/java/com/azure/android/communication/ui/chat/presentation/ui/viewmodel/MessageViewModel.kt [66:107]


    override fun get(index: Int): MessageViewModel {
        // Generate Message View Model here
        val lastMessage = try {
            messages[index - 1]
        } catch (e: IndexOutOfBoundsException) {
            EMPTY_MESSAGE_INFO_MODEL
        }
        val thisMessage = messages[index]
        val isLocalUser =
            thisMessage.senderCommunicationIdentifier?.id == localUserIdentifier || thisMessage.isCurrentUser
        val showReadReceipt =
            thisMessage.sendStatus == MessageSendStatus.SENT && lastMessageIdReadByRemoteParticipants != 0L &&
                lastMessageIdReadByRemoteParticipants == thisMessage.normalizedID

        return MessageViewModel(

            thisMessage,
            includeDebugInfo = includeDebugInfo,
            showUsername = !isLocalUser &&
                (lastMessage.senderCommunicationIdentifier?.id ?: "")
                != (thisMessage.senderCommunicationIdentifier?.id ?: ""),
            showTime =
            (
                (lastMessage.senderCommunicationIdentifier?.id ?: "")
                    != (thisMessage.senderCommunicationIdentifier?.id ?: "") &&
                    !thisMessage.isCurrentUser
                ) ||
                (thisMessage.isCurrentUser && !lastMessage.isCurrentUser),
            dateHeaderText = buildDateHeader(
                lastMessage.createdOn!!,
                thisMessage.createdOn ?: OffsetDateTime.now()
            ),
            isLocalUser = isLocalUser,
            messageStatus = thisMessage.sendStatus,
            showReadReceipt = showReadReceipt,
            showSentStatusIcon = shouldShowMessageStatusIcon(thisMessage, showReadReceipt),
            isHiddenUser = messages[index].messageType == ChatMessageType.PARTICIPANT_ADDED &&
                messages[index].participants.size == 1 &&
                hiddenParticipant.contains(messages[index].participants.first().userIdentifier.id),

        )
    }