ConversationDataSource
internal class ConversationDataSource(selfUserId: UserId, conversationDAO: ConversationDAO, memberDAO: MemberDAO, conversationApi: ConversationApi, messageDAO: MessageDAO, messageDraftDAO: MessageDraftDAO, clientDAO: ClientDAO, clientApi: ClientApi, conversationMetaDataDAO: ConversationMetaDataDAO, idMapper: IdMapper = MapperProvider.idMapper(), conversationMapper: ConversationMapper = MapperProvider.conversationMapper(selfUserId), memberMapper: MemberMapper = MapperProvider.memberMapper(), conversationStatusMapper: ConversationStatusMapper = MapperProvider.conversationStatusMapper(), conversationRoleMapper: ConversationRoleMapper = MapperProvider.conversationRoleMapper(), protocolInfoMapper: ProtocolInfoMapper = MapperProvider.protocolInfoMapper(), receiptModeMapper: ReceiptModeMapper = MapperProvider.receiptModeMapper(), userMapper: UserMapper = MapperProvider.userMapper()) : ConversationRepository
Constructors
Link copied to clipboard
internal constructor(selfUserId: UserId, conversationDAO: ConversationDAO, memberDAO: MemberDAO, conversationApi: ConversationApi, messageDAO: MessageDAO, messageDraftDAO: MessageDraftDAO, clientDAO: ClientDAO, clientApi: ClientApi, conversationMetaDataDAO: ConversationMetaDataDAO, idMapper: IdMapper = MapperProvider.idMapper(), conversationMapper: ConversationMapper = MapperProvider.conversationMapper(selfUserId), memberMapper: MemberMapper = MapperProvider.memberMapper(), conversationStatusMapper: ConversationStatusMapper = MapperProvider.conversationStatusMapper(), conversationRoleMapper: ConversationRoleMapper = MapperProvider.conversationRoleMapper(), protocolInfoMapper: ProtocolInfoMapper = MapperProvider.protocolInfoMapper(), receiptModeMapper: ReceiptModeMapper = MapperProvider.receiptModeMapper(), userMapper: UserMapper = MapperProvider.userMapper())
Functions
Link copied to clipboard
open suspend override fun changeConversationName(conversationId: ConversationId, conversationName: String): Either<CoreFailure, ConversationRenameResponse>
Link copied to clipboard
open suspend override fun clearContent(conversationId: ConversationId): Either<StorageFailure, Unit>
Deletes all conversation messages
Link copied to clipboard
open suspend override fun deleteConversationLocally(conversationId: ConversationId): Either<StorageFailure, Boolean>
this fun should never be used directly, use DeleteConversationUseCase() instead
Link copied to clipboard
open suspend override fun fetchConversation(conversationID: ConversationId): Either<CoreFailure, ConversationResponse>
Link copied to clipboard
open suspend override fun fetchConversationListDetails(conversationIdList: List<QualifiedID>): Either<CoreFailure, ConversationResponseDTO>
Link copied to clipboard
open suspend override fun fetchConversations(lastPagingState: String?): Either<CoreFailure, ConversationBatch>
Link copied to clipboard
open suspend override fun fetchMlsOneToOneConversation(userId: UserId): Either<CoreFailure, ConversationResponse>
Link copied to clipboard
open suspend override fun getConversationById(conversationId: ConversationId): Either<StorageFailure, Conversation>
Link copied to clipboard
open suspend override fun getConversationByMLSGroupId(mlsGroupId: GroupID): Either<CoreFailure, Conversation>
Link copied to clipboard
open suspend override fun getConversationDetails(conversationID: ConversationId): Either<StorageFailure, Conversation>
Link copied to clipboard
open suspend override fun getConversationIds(type: Conversation.Type, protocol: Conversation.Protocol, teamId: TeamId? = null): Either<StorageFailure, List<QualifiedID>>
Gets conversations based on type and protocol. All Conversation.Type.Group subtypes are treated the same.
Link copied to clipboard
open suspend override fun getConversationIdsWithoutMetadata(): Either<CoreFailure, List<QualifiedID>>
Link copied to clipboard
open suspend override fun getConversationLastReadDate(conversationId: ConversationId): Either<StorageFailure, Instant>
Link copied to clipboard
Link copied to clipboard
open override fun getConversationListWithOtherUserName(): Either<StorageFailure, Flow<List<ConversationWithOtherUserName>>>
Link copied to clipboard
open suspend override fun getConversationMemberCounts(conversationId: ConversationId): Either<StorageFailure, ConversationMemberCounts>
Link copied to clipboard
open suspend override fun getConversationMemberRole(conversationId: ConversationId, userId: UserId): Either<StorageFailure, Conversation.Member.Role?>
Link copied to clipboard
open suspend override fun getConversationMembers(conversationId: ConversationId): Either<StorageFailure, List<UserId>>
Fetches a list of all members' IDs or a given conversation including self user
Link copied to clipboard
open suspend override fun getConversationProtocolInfo(conversationId: ConversationId): Either<StorageFailure, Conversation.ProtocolInfo>
Link copied to clipboard
open suspend override fun getConversationRecipients(conversationId: ConversationId): Either<CoreFailure, List<Recipient>>
Fetches a list of all recipients for a given conversation including this very client
Link copied to clipboard
open suspend override fun getConversationRecipientsForCalling(conversationId: ConversationId): Either<CoreFailure, List<Recipient>>
Fetches a list of all recipients for a given conversation including this very client
Link copied to clipboard
open suspend override fun getConversationsByGroupState(groupState: Conversation.ProtocolInfo.MLSCapable.GroupState): Either<StorageFailure, List<Conversation>>
Link copied to clipboard
open suspend override fun getConversationsByUserId(userId: UserId): Either<CoreFailure, List<Conversation>>
Link copied to clipboard
open suspend override fun getConversationUnreadEventsCount(conversationId: ConversationId): Either<StorageFailure, Long>
Link copied to clipboard
open suspend override fun getGroupConversationsWithMembersWithBothDomains(firstDomain: String, secondDomain: String): Either<CoreFailure, GroupConversationMembers>
Link copied to clipboard
open suspend override fun getGroupStatusMembersNamesAndHandles(groupID: GroupID): Either<StorageFailure, EpochChangesData>
Link copied to clipboard
open suspend override fun getMLSConversationsByDomain(domain: String): Either<CoreFailure, List<Conversation>>
Link copied to clipboard
Link copied to clipboard
open suspend override fun getNonDeletedConversationById(conversationId: ConversationId): Either<StorageFailure, Conversation>
Link copied to clipboard
open suspend override fun getOneOnOneConversationsWithFederatedMembers(domain: String): Either<CoreFailure, OneOnOneMembers>
Link copied to clipboard
open suspend override fun getOneOnOneConversationsWithOtherUser(otherUserId: UserId, protocol: Conversation.Protocol): Either<StorageFailure, List<ConversationId>>
Link copied to clipboard
Link copied to clipboard
open suspend override fun getRecipientById(conversationId: ConversationId, userIDList: List<UserId>): Either<StorageFailure, List<Recipient>>
Link copied to clipboard
open suspend override fun getTeamConversationIdsReadyToCompleteMigration(teamId: TeamId): Either<StorageFailure, List<QualifiedID>>
Link copied to clipboard
open suspend override fun insertConversations(conversations: List<Conversation>): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun isCellEnabled(conversationId: ConversationId): Either<StorageFailure, Boolean>
Link copied to clipboard
open suspend override fun isConversationMemberAdmin(conversationId: ConversationId, userId: UserId): Either<StorageFailure, Boolean>
Link copied to clipboard
open suspend override fun isInformedAboutDegradedMLSVerification(conversationId: ConversationId): Either<StorageFailure, Boolean>
Link copied to clipboard
open suspend override fun observeConversationById(conversationId: ConversationId): Flow<Either<StorageFailure, Conversation>>
Link copied to clipboard
open suspend override fun observeConversationDetailsById(conversationID: ConversationId): Flow<Either<StorageFailure, ConversationDetails>>
Link copied to clipboard
Link copied to clipboard
open override fun observeConversationListDetails(fromArchive: Boolean, conversationFilter: ConversationFilter = ConversationFilter.All): Flow<List<ConversationDetails>>
Link copied to clipboard
open override fun observeConversationListDetailsWithEvents(fromArchive: Boolean = false, conversationFilter: ConversationFilter = ConversationFilter.All, strictMlsFilter: Boolean = true): Flow<List<ConversationDetailsWithEvents>>
Link copied to clipboard
open suspend override fun observeConversationMembers(conversationID: ConversationId): Flow<List<Conversation.Member>>
Link copied to clipboard
Link copied to clipboard
open override fun observeIsUserMember(conversationId: ConversationId, userId: UserId): Flow<Either<CoreFailure, Boolean>>
Link copied to clipboard
open override fun observeLegalHoldStatus(conversationId: ConversationId): Flow<Either<StorageFailure, Conversation.LegalHoldStatus>>
Link copied to clipboard
open override fun observeLegalHoldStatusChangeNotified(conversationId: ConversationId): Flow<Either<StorageFailure, Boolean>>
Link copied to clipboard
open override fun observeOneToOneConversationDetailsWithOtherUser(otherUserId: UserId): Flow<Either<StorageFailure, ConversationDetails.OneOne>>
Link copied to clipboard
open override fun observeOneToOneConversationWithOtherUser(otherUserId: UserId): Flow<Either<StorageFailure, Conversation>>
Link copied to clipboard
Link copied to clipboard
open suspend override fun persistConversations(conversations: List<ConversationEntity>): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun persistIncompleteConversations(conversationsFailed: List<NetworkQualifiedId>): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun persistMembers(members: List<Conversation.Member>, conversationID: ConversationId): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun resetMlsConversation(groupId: GroupID, epoch: ULong): Either<NetworkFailure, Unit>
Link copied to clipboard
open suspend override fun selectMembersNameAndHandle(conversationId: ConversationId): Either<StorageFailure, Map<UserId, NameAndHandle>>
Link copied to clipboard
open suspend override fun sendTypingIndicatorStatus(conversationId: ConversationId, typingStatus: Conversation.TypingIndicatorMode): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun setConversationDeletedLocally(conversationId: ConversationId, deletedLocally: Boolean): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun setDegradedConversationNotifiedFlag(conversationId: QualifiedID, value: Boolean): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun setInformedAboutDegradedMLSVerificationFlag(conversationId: ConversationId, isInformed: Boolean): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun setLegalHoldStatusChangeNotified(conversationId: ConversationId): Either<CoreFailure, Boolean>
Link copied to clipboard
open suspend override fun updateAccessInfo(conversationID: ConversationId, access: Set<Conversation.Access>, accessRole: Set<Conversation.AccessRole>): Either<CoreFailure, Unit>
Link copied to clipboard
Link copied to clipboard
open suspend override fun updateArchivedStatusLocally(conversationId: ConversationId, isArchived: Boolean, archivedStatusTimestamp: Instant): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateArchivedStatusRemotely(conversationId: ConversationId, isArchived: Boolean, archivedStatusTimestamp: Instant): Either<NetworkFailure, Unit>
Link copied to clipboard
open suspend override fun updateChannelAddPermission(conversationId: ConversationId, channelAddPermission: ConversationDetails.Group.Channel.ChannelAddPermission): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateChannelAddPermissionLocally(conversationId: ConversationId, channelAddPermission: ConversationDetails.Group.Channel.ChannelAddPermission): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateChannelAddPermissionRemotely(conversationId: ConversationId, channelAddPermission: ConversationDetails.Group.Channel.ChannelAddPermission): Either<NetworkFailure, UpdateChannelAddPermissionResponse>
Link copied to clipboard
open suspend override fun updateConversationGroupState(groupID: GroupID, groupState: Conversation.ProtocolInfo.MLSCapable.GroupState): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateConversationGroupStateByConversationId(conversationId: ConversationId, groupState: Conversation.ProtocolInfo.MLSCapable.GroupState): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateConversationMemberRole(conversationId: ConversationId, userId: UserId, role: Conversation.Member.Role): Either<CoreFailure, Unit>
Updates the conversation member role, both remotely and local
Link copied to clipboard
open suspend override fun updateConversationMembers(conversations: List<ConversationResponse>, selfUserTeamId: TeamId?, invalidateMembers: Boolean): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateConversationModifiedDate(qualifiedID: QualifiedID, date: Instant): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateConversationModifiedDateToMaxOfSources(targetId: ConversationId, sourceIds: Collection<ConversationId>): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateConversationNotificationDate(qualifiedID: QualifiedID, date: Instant? = null): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateConversationReadDate(qualifiedID: QualifiedID, date: Instant): Either<StorageFailure, Unit>
Update the conversation seen date, which is a date when the user sees the content of the conversation.
Link copied to clipboard
open suspend override fun updateLegalHoldStatus(conversationId: ConversationId, legalHoldStatus: Conversation.LegalHoldStatus): Either<CoreFailure, Boolean>
Link copied to clipboard
open suspend override fun updateMemberFromEvent(member: Conversation.Member, conversationID: ConversationId): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateMLSGroupIdAndState(conversationId: ConversationId, groupID: GroupID, epoch: ULong, groupState: Conversation.ProtocolInfo.MLSCapable.GroupState): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateMlsVerificationStatus(verificationStatus: Conversation.VerificationStatus, conversationID: ConversationId): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateMutedStatusLocally(conversationId: ConversationId, mutedStatus: MutedConversationStatus, mutedStatusTimestamp: Instant): Either<StorageFailure, Unit>
Link copied to clipboard
open suspend override fun updateMutedStatusRemotely(conversationId: ConversationId, mutedStatus: MutedConversationStatus, mutedStatusTimestamp: Instant): Either<NetworkFailure, Unit>
Link copied to clipboard
open suspend override fun updateProtocolLocally(conversationId: ConversationId, protocol: Conversation.Protocol): Either<CoreFailure, ConversationProtocolUpdateStatus>
Update a conversation's protocol locally.
Link copied to clipboard
open suspend override fun updateProtocolRemotely(conversationId: ConversationId, protocol: Conversation.Protocol): Either<CoreFailure, ConversationProtocolUpdateStatus>
Update a conversation's protocol remotely.
Link copied to clipboard
open suspend override fun updateReadDateAndGetHasUnreadEvents(qualifiedID: QualifiedID, date: Instant): Either<StorageFailure, Boolean>
Link copied to clipboard
open suspend override fun updateReadDatesAndGetHasUnreadEvents(conversationDates: Map<QualifiedID, Instant>): Either<StorageFailure, Map<QualifiedID, Boolean>>
Link copied to clipboard
open suspend override fun updateReceiptMode(conversationId: ConversationId, receiptMode: Conversation.ReceiptMode): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun updateUserSelfDeletionTimer(conversationId: ConversationId, selfDeletionTimer: SelfDeletionTimer): Either<CoreFailure, Unit>
Link copied to clipboard
open suspend override fun whoDeletedMe(conversationId: ConversationId): Either<CoreFailure, UserId?>