MessageDataSource
internal class MessageDataSource(selfUserId: UserId, messageApi: MessageApi, mlsMessageApi: MLSMessageApi, messageDAO: MessageDAO, nomadMessagePagingCoordinator: NomadMessagePagingCoordinator? = null, sendMessageFailureMapper: SendMessageFailureMapper = MapperProvider.sendMessageFailureMapper(), messageMapper: MessageMapper = MapperProvider.messageMapper(selfUserId), linkPreviewMapper: LinkPreviewMapper = MapperProvider.linkPreviewMapper(), messageMentionMapper: MessageMentionMapper = MapperProvider.messageMentionMapper(selfUserId), receiptModeMapper: ReceiptModeMapper = MapperProvider.receiptModeMapper(), sendMessagePartialFailureMapper: SendMessagePartialFailureMapper = MapperProvider.sendMessagePartialFailureMapper(), notificationMapper: LocalNotificationMessageMapper = LocalNotificationMessageMapperImpl()) : MessageRepository
Constructors
Link copied to clipboard
internal constructor(selfUserId: UserId, messageApi: MessageApi, mlsMessageApi: MLSMessageApi, messageDAO: MessageDAO, nomadMessagePagingCoordinator: NomadMessagePagingCoordinator? = null, sendMessageFailureMapper: SendMessageFailureMapper = MapperProvider.sendMessageFailureMapper(), messageMapper: MessageMapper = MapperProvider.messageMapper(selfUserId), linkPreviewMapper: LinkPreviewMapper = MapperProvider.linkPreviewMapper(), messageMentionMapper: MessageMentionMapper = MapperProvider.messageMentionMapper(selfUserId), receiptModeMapper: ReceiptModeMapper = MapperProvider.receiptModeMapper(), sendMessagePartialFailureMapper: SendMessagePartialFailureMapper = MapperProvider.sendMessagePartialFailureMapper(), notificationMapper: LocalNotificationMessageMapper = LocalNotificationMessageMapperImpl())
Functions
Link copied to clipboard
open suspend override fun broadcastEnvelope(envelope: MessageEnvelope, messageOption: BroadcastMessageOption): Either<CoreFailure, Instant>
Send a Proteus MessageEnvelope.
Link copied to clipboard
open suspend override fun deleteMessage(messageUuid: String, conversationId: ConversationId): Either<CoreFailure, Unit>
Link copied to clipboard
Link copied to clipboard
open suspend override fun getAllAssetIdsFromConversationId(conversationId: ConversationId): Either<StorageFailure, List<String>>
Link copied to clipboard
Link copied to clipboard
open suspend override fun getAllPendingMessagesFromUser(senderUserId: UserId): Either<CoreFailure, List<Message>>
Link copied to clipboard
open suspend override fun getImageAssetMessagesByConversationId(conversationId: ConversationId, limit: Int, offset: Int): List<AssetMessage>
Link copied to clipboard
open suspend override fun getLastMessagesForConversationIds(conversationIdList: List<ConversationId>): Either<StorageFailure, Map<ConversationId, Message>>
Link copied to clipboard
open suspend override fun getMessageAssetTransferStatus(messageId: String, conversationId: ConversationId): Either<StorageFailure, AssetTransferStatus>
Link copied to clipboard
open suspend override fun getMessageById(conversationId: ConversationId, messageUuid: String): Either<StorageFailure, Message>
Link copied to clipboard
open override fun getMessagesByConversationIdAndVisibility(conversationId: ConversationId, limit: Int, offset: Int, visibility: List<Message.Visibility> = Message.Visibility.entries): Flow<List<Message>>
Link copied to clipboard
open override fun getMessagesByConversationIdAndVisibilityAfterDate(conversationId: ConversationId, date: String, visibility: List<Message.Visibility> = Message.Visibility.entries): Flow<List<Message>>
Link copied to clipboard
open suspend override fun getNextAudioMessageInConversation(conversationId: ConversationId, messageId: String): Either<CoreFailure, String>
Link copied to clipboard
open suspend override fun getNotificationMessage(messageSizePerConversation: Int = 10): Either<CoreFailure, List<LocalNotification>>
Link copied to clipboard
open suspend override fun getPendingConfirmationMessagesByConversationAfterDate(conversationId: ConversationId, afterDateTime: Instant, untilDateTime: Instant, visibility: List<Message.Visibility> = Message.Visibility.entries): Either<CoreFailure, List<String>>
Link copied to clipboard
open suspend override fun getReceiptModeFromGroupConversationByQualifiedID(conversationId: ConversationId): Either<CoreFailure, Conversation.ReceiptMode?>
Link copied to clipboard
open suspend override fun getSearchedConversationMessagePosition(conversationId: ConversationId, messageId: String): Either<StorageFailure, Int>
Link copied to clipboard
open suspend override fun getSenderNameByMessageId(conversationId: ConversationId, messageId: String): Either<CoreFailure, String>
Link copied to clipboard
open suspend override fun markMessageAsDeleted(messageUuid: String, conversationId: ConversationId): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun markProteusMessagesAsDecryptionResolved(userId: UserId, clientId: ClientId): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun markSelfDeletionEndDate(conversationId: ConversationId, messageUuid: String, deletionEndDate: Instant): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun moveMessagesToAnotherConversation(originalConversation: ConversationId, targetConversation: ConversationId): Either<StorageFailure, Unit>
Link copied to clipboard
open override fun observeAssetStatuses(conversationId: ConversationId): Flow<Either<StorageFailure, List<MessageAssetStatus>>>
Link copied to clipboard
open override fun observeMessageById(conversationId: ConversationId, messageUuid: String): Flow<Either<StorageFailure, Message>>
Link copied to clipboard
open override fun observeMessageVisibility(messageUuid: String, conversationId: ConversationId): Flow<Either<StorageFailure, MessageEntity.Visibility>>
Link copied to clipboard
open suspend override fun persistMessage(message: Message.Standalone, updateConversationModifiedDate: Boolean = false): Either<CoreFailure, InsertMessageResult>
this fun should never be used directly, use PersistMessageUseCase() instead
Link copied to clipboard
open suspend override fun persistNoClientsToDeliverFailure(conversationId: ConversationId, messageUuid: String, usersWithFailedDeliveryList: List<UserId>): Either<CoreFailure, Unit>
Persist a list of users ids whose clients are missing and could not be retrieved RecipientFailureTypeEntity.NO_CLIENTS_TO_DELIVER
Link copied to clipboard
open suspend override fun persistRecipientsDeliveryFailure(conversationId: ConversationId, messageUuid: String, usersWithFailedDeliveryList: List<UserId>): Either<CoreFailure, Unit>
Persist a list of users ids that failed to receive the message RecipientFailureTypeEntity.MESSAGE_DELIVERY_FAILED
Link copied to clipboard
open suspend override fun persistSystemMessageToAllConversations(message: Message.System): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun promoteMessageToSentUpdatingServerTime(conversationId: ConversationId, messageUuid: String, serverDate: Instant?, millis: Long): Either<CoreFailure, Unit>
updates the message status to MessageEntity.Status.SENT and optionally sets the message creation date to serverDate if not null, also marks other pending messages and adds millis to their date
Link copied to clipboard
Link copied to clipboard
open suspend override fun searchMessagesByText(conversationId: ConversationId, searchQuery: String, limit: Int, offset: Int): Either<StorageFailure, List<Message.Standalone>>
Search messages in a conversation by text content.
Link copied to clipboard
open suspend override fun searchMessagesByTextGlobally(searchQuery: String, limit: Int, offset: Int): Either<StorageFailure, List<Message.Standalone>>
Search messages across all conversations by text content.
Link copied to clipboard
open suspend override fun sendEnvelope(conversationId: ConversationId, envelope: MessageEnvelope, messageTarget: MessageTarget): Either<CoreFailure, MessageSent>
Send a Proteus MessageEnvelope to the given conversationId.
Link copied to clipboard
open suspend override fun sendMLSMessage(message: MLSMessageApi.Message): Either<CoreFailure, MessageSent>
Link copied to clipboard
open suspend override fun updateAssetMessageTransferStatus(transferStatus: AssetTransferStatus, conversationId: ConversationId, messageUuid: String): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateAudioMessageNormalizedLoudness(conversationId: ConversationId, messageId: String, normalizedLoudness: ByteArray): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateCompositeMessage(conversationId: ConversationId, messageContent: MessageContent.CompositeEdited, newMessageId: MessageId, editInstant: Instant): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateLegalHoldMessageMembers(messageId: String, conversationId: ConversationId, newMembers: List<UserId>): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateLinkPreviewImageLocalPath(conversationId: ConversationId, messageId: String, urlOffset: Int, localPath: String): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateMessagesStatus(messageStatus: MessageEntity.Status, conversationId: ConversationId, messageUuids: List<String>): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateMessagesStatusIfNotRead(messageStatus: MessageEntity.Status, conversationId: ConversationId, messageIds: List<String>): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateMessageStatus(messageStatus: MessageEntity.Status, conversationId: ConversationId, messageUuid: String): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateMultipartMessage(conversationId: ConversationId, messageContent: MessageContent.MultipartEdited, newMessageId: String, editInstant: Instant): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateTextMessage(conversationId: ConversationId, messageId: String, messageContent: MessageContent.Text): Either<CoreFailure, Unit>
open suspend override fun updateTextMessage(conversationId: ConversationId, messageContent: MessageContent.TextEdited, newMessageId: String, editInstant: Instant): Either<CoreFailure, Unit>