Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import com.wire.kalium.logic.feature.asset.UpdateAudioMessageNormalizedLoudnessU
import com.wire.kalium.logic.feature.asset.upload.ScheduleNewAssetMessageUseCase
import com.wire.kalium.logic.feature.incallreaction.SendInCallReactionUseCase
import com.wire.kalium.logic.feature.message.DeleteMessageUseCase
import com.wire.kalium.logic.feature.message.FetchOlderNomadMessagesByConversationUseCase
import com.wire.kalium.logic.feature.message.GetMessageByIdUseCase
import com.wire.kalium.logic.feature.message.GetNotificationsUseCase
import com.wire.kalium.logic.feature.message.GetPaginatedFlowOfMessagesByConversationUseCase
Expand All @@ -55,6 +56,7 @@ import com.wire.kalium.logic.feature.message.draft.GetMessageDraftUseCase
import com.wire.kalium.logic.feature.message.draft.RemoveMessageDraftUseCase
import com.wire.kalium.logic.feature.message.draft.SaveMessageDraftUseCase
import com.wire.kalium.logic.feature.message.ephemeral.EnqueueMessageSelfDeletionUseCase
import com.wire.kalium.logic.feature.message.fetchOlderMessagesByConversationId
import com.wire.kalium.logic.feature.message.getPaginatedFlowOfAssetMessageByConversationId
import com.wire.kalium.logic.feature.message.getPaginatedFlowOfMessagesByConversation
import com.wire.kalium.logic.feature.message.getPaginatedFlowOfMessagesBySearchQueryAndConversation
Expand Down Expand Up @@ -177,6 +179,11 @@ class MessageModule {
fun provideGetPaginatedMessagesUseCase(messageScope: MessageScope): GetPaginatedFlowOfMessagesByConversationUseCase =
messageScope.getPaginatedFlowOfMessagesByConversation

@ViewModelScoped
@Provides
fun provideFetchOlderMessagesUseCase(messageScope: MessageScope): FetchOlderNomadMessagesByConversationUseCase =
messageScope.fetchOlderMessagesByConversationId

@ViewModelScoped
@Provides
fun provideGetImageAssetMessagesByConversationUseCase(messageScope: MessageScope): GetImageAssetMessagesForConversationUseCase =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

package com.wire.android.ui.home.conversations

import com.wire.android.navigation.annotation.app.WireRootDestination
import android.annotation.SuppressLint
import android.content.Context
import android.net.Uri
Expand Down Expand Up @@ -82,6 +81,14 @@ import androidx.paging.compose.LazyPagingItems
import androidx.paging.compose.collectAsLazyPagingItems
import androidx.paging.compose.itemContentType
import androidx.paging.compose.itemKey
import com.ramcosta.composedestinations.generated.app.destinations.ConversationScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.GroupConversationDetailsScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.ImagesPreviewScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.MediaGalleryScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.MessageDetailsScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.OtherUserProfileScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.SelfUserProfileScreenDestination
import com.ramcosta.composedestinations.generated.sketch.destinations.DrawingCanvasScreenDestination
import com.ramcosta.composedestinations.result.NavResult.Canceled
import com.ramcosta.composedestinations.result.NavResult.Value
import com.ramcosta.composedestinations.result.OpenResultRecipient
Expand All @@ -92,7 +99,6 @@ import com.wire.android.R
import com.wire.android.appLogger
import com.wire.android.feature.analytics.AnonymousAnalyticsManagerImpl
import com.wire.android.feature.analytics.model.AnalyticsEvent
import com.ramcosta.composedestinations.generated.sketch.destinations.DrawingCanvasScreenDestination
import com.wire.android.feature.sketch.model.DrawingCanvasNavArgs
import com.wire.android.feature.sketch.model.DrawingCanvasNavBackArgs
import com.wire.android.mapper.MessageDateTimeGroup
Expand All @@ -101,6 +107,7 @@ import com.wire.android.model.SnackBarMessage
import com.wire.android.navigation.BackStackMode
import com.wire.android.navigation.NavigationCommand
import com.wire.android.navigation.Navigator
import com.wire.android.navigation.annotation.app.WireRootDestination
import com.wire.android.ui.calling.getOutgoingCallIntent
import com.wire.android.ui.calling.ongoing.getOngoingCallIntent
import com.wire.android.ui.common.HandleActions
Expand Down Expand Up @@ -128,13 +135,6 @@ import com.wire.android.ui.common.snackbar.LocalSnackbarHostState
import com.wire.android.ui.common.snackbar.SwipeableSnackbar
import com.wire.android.ui.common.spacers.HorizontalSpace
import com.wire.android.ui.common.visbility.rememberVisibilityState
import com.ramcosta.composedestinations.generated.app.destinations.ConversationScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.GroupConversationDetailsScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.ImagesPreviewScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.MediaGalleryScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.MessageDetailsScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.OtherUserProfileScreenDestination
import com.ramcosta.composedestinations.generated.app.destinations.SelfUserProfileScreenDestination
import com.wire.android.ui.emoji.EmojiPickerBottomSheet
import com.wire.android.ui.home.conversations.AuthorHeaderHelper.rememberShouldHaveSmallBottomPadding
import com.wire.android.ui.home.conversations.AuthorHeaderHelper.rememberShouldShowHeader
Expand Down Expand Up @@ -182,10 +182,10 @@ import com.wire.android.ui.theme.wireColorScheme
import com.wire.android.ui.theme.wireTypography
import com.wire.android.util.DateAndTimeParsers
import com.wire.android.util.normalizeLink
import com.wire.android.util.openDownloadFolder
import com.wire.android.util.serverDate
import com.wire.android.util.ui.PreviewMultipleThemes
import com.wire.android.util.ui.UIText
import com.wire.android.util.openDownloadFolder
import com.wire.kalium.common.error.NetworkFailure
import com.wire.kalium.logic.data.conversation.Conversation
import com.wire.kalium.logic.data.conversation.Conversation.TypingIndicatorMode
Expand Down Expand Up @@ -492,8 +492,8 @@ fun ConversationScreen(
navigator.navigate(NavigationCommand(SelfUserProfileScreenDestination))
} else {
(conversationInfoViewState.conversationDetailsData as? ConversationDetailsData.Group)?.conversationId.let {
navigator.navigate(NavigationCommand(OtherUserProfileScreenDestination(mentionUserId, it)))
}
navigator.navigate(NavigationCommand(OtherUserProfileScreenDestination(mentionUserId, it)))
}
}
}
},
Expand Down Expand Up @@ -661,6 +661,9 @@ fun ConversationScreen(
)
},
currentTimeInMillisFlow = conversationMessagesViewModel.currentTimeInMillisFlow,
onReachedOldestMessage = {
conversationMessagesViewModel.fetchOlderMessagesIfNeeded()
},
onAttachmentClick = messageAttachmentsViewModel::onAttachmentClicked,
onAttachmentMenuClick = messageAttachmentsViewModel::onAttachmentMenuClicked,
isWireCellsEnabled = conversationInfoViewModel.conversationInfoViewState.isWireCellEnabled,
Expand Down Expand Up @@ -928,6 +931,7 @@ private fun ConversationScreen(
onAttachmentClick: (AttachmentDraftUi) -> Unit,
onAttachmentMenuClick: (AttachmentDraftUi) -> Unit,
currentTimeInMillisFlow: Flow<Long> = flow { },
onReachedOldestMessage: () -> Unit = {},
isWireCellsEnabled: Boolean = false,
) {
val context = LocalContext.current
Expand Down Expand Up @@ -1025,6 +1029,7 @@ private fun ConversationScreen(
onLinkClick = onLinkClick,
onNavigateToReplyOriginalMessage = onNavigateToReplyOriginalMessage,
currentTimeInMillisFlow = currentTimeInMillisFlow,
onReachedOldestMessage = onReachedOldestMessage,
openDrawingCanvas = openDrawingCanvas,
onAttachmentClick = onAttachmentClick,
onAttachmentMenuClick = onAttachmentMenuClick,
Expand Down Expand Up @@ -1113,6 +1118,7 @@ private fun ConversationScreenContent(
onAttachmentClick: (AttachmentDraftUi) -> Unit,
onAttachmentMenuClick: (AttachmentDraftUi) -> Unit,
currentTimeInMillisFlow: Flow<Long> = flow {},
onReachedOldestMessage: () -> Unit = {},
showHistoryLoadingIndicator: Boolean = false,
isBubbleUiEnabled: Boolean = false,
isWireCellsEnabled: Boolean = false,
Expand Down Expand Up @@ -1159,6 +1165,7 @@ private fun ConversationScreenContent(
selectedMessageId = selectedMessageId,
interactionAvailability = messageComposerStateHolder.messageComposerViewState.value.interactionAvailability,
currentTimeInMillisFlow = currentTimeInMillisFlow,
onReachedOldestMessage = onReachedOldestMessage,
showHistoryLoadingIndicator = showHistoryLoadingIndicator,
isBubbleUiEnabled = isBubbleUiEnabled,
isWireCellsEnabled = isWireCellsEnabled,
Expand Down Expand Up @@ -1244,9 +1251,11 @@ fun MessageList(
showHistoryLoadingIndicator: Boolean = false,
isBubbleUiEnabled: Boolean = false,
isWireCellsEnabled: Boolean = false,
onReachedOldestMessage: () -> Unit = {},
) {
val prevItemCount = remember { mutableStateOf(lazyPagingMessages.itemCount) }
val readLastMessageAtStartTriggered = remember { mutableStateOf(false) }
val shouldTriggerOldestMessageFetch = remember { mutableStateOf(true) }
val currentTime by currentTimeInMillisFlow.collectAsState(initial = System.currentTimeMillis())

LaunchedEffect(lazyPagingMessages.itemCount) {
Expand Down Expand Up @@ -1282,6 +1291,18 @@ fun MessageList(
}
}

LaunchedEffect(lazyListState.isScrollInProgress, lazyPagingMessages.itemCount) {
if (!lazyListState.isScrollInProgress && lazyPagingMessages.itemCount > 0) {
val reachedOldest = !lazyListState.canScrollForward
if (reachedOldest && shouldTriggerOldestMessageFetch.value) {
onReachedOldestMessage()
shouldTriggerOldestMessageFetch.value = false // triggered only once, to avoid multiple calls for the same end of the list
} else if (!reachedOldest) {
shouldTriggerOldestMessageFetch.value = true
}
}
}

Box(
contentAlignment = Alignment.BottomEnd,
modifier = modifier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import androidx.compose.runtime.setValue
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.ramcosta.composedestinations.generated.app.navArgs
import com.wire.android.R
import com.wire.android.appLogger
import com.wire.android.media.audiomessage.ConversationAudioMessagePlayer
Expand All @@ -39,7 +40,6 @@ import com.wire.android.ui.home.conversations.model.UIMessage
import com.wire.android.ui.home.conversations.model.UIMessageContent
import com.wire.android.ui.home.conversations.model.UIQuotedMessage
import com.wire.android.ui.home.conversations.usecase.GetMessagesForConversationUseCase
import com.ramcosta.composedestinations.generated.app.navArgs
import com.wire.android.util.FileManager
import com.wire.android.util.dispatchers.DispatcherProvider
import com.wire.android.util.startFileShareIntent
Expand All @@ -62,6 +62,7 @@ import com.wire.kalium.logic.feature.conversation.ClearUsersTypingEventsUseCase
import com.wire.kalium.logic.feature.conversation.GetConversationUnreadEventsCountUseCase
import com.wire.kalium.logic.feature.conversation.ObserveConversationDetailsUseCase
import com.wire.kalium.logic.feature.message.DeleteMessageUseCase
import com.wire.kalium.logic.feature.message.FetchOlderNomadMessagesByConversationUseCase
import com.wire.kalium.logic.feature.message.GetMessageByIdUseCase
import com.wire.kalium.logic.feature.message.GetSearchedConversationMessagePositionUseCase
import com.wire.kalium.logic.feature.message.ToggleReactionUseCase
Expand Down Expand Up @@ -100,6 +101,7 @@ class ConversationMessagesViewModel @Inject constructor(
private val fileManager: FileManager,
private val dispatchers: DispatcherProvider,
private val getMessageForConversation: GetMessagesForConversationUseCase,
private val fetchOlderNomadMessages: FetchOlderNomadMessagesByConversationUseCase,
private val toggleReaction: ToggleReactionUseCase,
private val resetSession: ResetSessionUseCase,
private val audioMessagePlayer: ConversationAudioMessagePlayer,
Expand Down Expand Up @@ -220,6 +222,12 @@ class ConversationMessagesViewModel @Inject constructor(
handleSelectedSearchedMessageHighlighting()
}

fun fetchOlderMessagesIfNeeded() {
viewModelScope.launch {
fetchOlderNomadMessages(conversationId)
}
}

private suspend fun handleSelectedSearchedMessageHighlighting() {
viewModelScope.launch {
delay(3.seconds)
Expand Down Expand Up @@ -431,6 +439,7 @@ class ConversationMessagesViewModel @Inject constructor(
private companion object {
const val DEFAULT_ASSET_NAME = "Wire File"
const val CURRENT_TIME_REFRESH_WINDOW_IN_MILLIS: Long = 60_000
const val REMOTE_PAGE_SIZE = 20
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ package com.wire.android.ui.home.conversations.messages

import androidx.lifecycle.SavedStateHandle
import androidx.paging.PagingData
import com.ramcosta.composedestinations.generated.app.navArgs
import com.wire.android.config.TestDispatcherProvider
import com.wire.android.config.mockUri
import com.wire.android.media.audiomessage.AudioSpeed
Expand All @@ -31,7 +32,6 @@ import com.wire.android.ui.home.conversations.ConversationNavArgs
import com.wire.android.ui.home.conversations.model.AssetBundle
import com.wire.android.ui.home.conversations.model.UIMessage
import com.wire.android.ui.home.conversations.usecase.GetMessagesForConversationUseCase
import com.ramcosta.composedestinations.generated.app.navArgs
import com.wire.android.util.FileManager
import com.wire.kalium.common.error.CoreFailure
import com.wire.kalium.logic.data.asset.AttachmentType
Expand All @@ -51,6 +51,7 @@ import com.wire.kalium.logic.feature.conversation.ClearUsersTypingEventsUseCase
import com.wire.kalium.logic.feature.conversation.GetConversationUnreadEventsCountUseCase
import com.wire.kalium.logic.feature.conversation.ObserveConversationDetailsUseCase
import com.wire.kalium.logic.feature.message.DeleteMessageUseCase
import com.wire.kalium.logic.feature.message.FetchOlderNomadMessagesByConversationUseCase
import com.wire.kalium.logic.feature.message.GetMessageByIdUseCase
import com.wire.kalium.logic.feature.message.GetSearchedConversationMessagePositionUseCase
import com.wire.kalium.logic.feature.message.MessageOperationResult
Expand Down Expand Up @@ -83,6 +84,9 @@ class ConversationMessagesViewModelArrangement {
@MockK
lateinit var getMessagesForConversationUseCase: GetMessagesForConversationUseCase

@MockK
lateinit var fetchOlderNomadMessagesByConversationUseCase: FetchOlderNomadMessagesByConversationUseCase

@MockK
lateinit var getMessageById: GetMessageByIdUseCase

Expand Down Expand Up @@ -136,6 +140,7 @@ class ConversationMessagesViewModelArrangement {
fileManager,
TestDispatcherProvider(),
getMessagesForConversationUseCase,
fetchOlderNomadMessagesByConversationUseCase,
toggleReaction,
resetSession,
conversationAudioMessagePlayer,
Expand All @@ -155,6 +160,7 @@ class ConversationMessagesViewModelArrangement {
coEvery { toggleReaction(any(), any(), any()) } returns ToggleReactionResult.Success
coEvery { observeConversationDetails(any()) } returns flowOf()
coEvery { getMessagesForConversationUseCase(any(), any()) } returns messagesChannel.consumeAsFlow()
coEvery { fetchOlderNomadMessagesByConversationUseCase(any(), any()) } returns Unit
coEvery { getConversationUnreadEventsCount(any()) } returns GetConversationUnreadEventsCountUseCase.Result.Success(0L)
coEvery { updateAssetMessageDownloadStatus(any(), any(), any()) } returns UpdateTransferStatusResult.Success
coEvery { clearUsersTypingEvents() } returns Unit
Expand Down
2 changes: 1 addition & 1 deletion kalium
Submodule kalium updated 86 files
+1 −1 .github/workflows/publish-testservice.yml
+1 −1 .github/workflows/quay.yml
+7 −1 ...del/src/commonMain/kotlin/com/wire/kalium/network/api/authenticated/nomaddevice/NomadAllMessagesResponse.kt
+34 −0 ...del/src/commonMain/kotlin/com/wire/kalium/network/api/authenticated/nomaddevice/NomadBatchRestoreRequest.kt
+42 −0 ...el/src/commonMain/kotlin/com/wire/kalium/network/api/authenticated/nomaddevice/NomadBatchRestoreResponse.kt
+3 −1 ...ommonMain/kotlin/com/wire/kalium/network/api/authenticated/nomaddevice/NomadConversationMetadataResponse.kt
+9 −7 ...el/src/commonMain/kotlin/com/wire/kalium/network/api/authenticated/nomaddevice/NomadMessageEventsRequest.kt
+1 −1 data/network/src/commonMain/kotlin/com/wire/kalium/network/BackendMetaDataUtil.kt
+11 −0 ...work/src/commonMain/kotlin/com/wire/kalium/network/api/base/authenticated/nomaddevice/NomadDeviceSyncApi.kt
+39 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v0/authenticated/NomadDeviceSyncApiV0.kt
+22 −14 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v0/unauthenticated/SSOLoginApiV0.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/AccessTokenApiV15.kt
+28 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/AssetApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/CallApiV15.kt
+25 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/ClientApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/ConnectionApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/ConversationApiV15.kt
+25 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/ConversationHistoryApiV15.kt
+25 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/E2EIApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/FeatureConfigApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/KeyPackageApiV15.kt
+28 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/LogoutApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/MLSMessageApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/MLSPublicKeyApiV15.kt
+28 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/MessageApiV15.kt
+30 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/NotificationApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/PreKeyApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/PropertiesApiV15.kt
+28 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/SelfApiV15.kt
+24 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/ServerTimeApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/TeamsApiV15.kt
+26 −0 .../network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/UpgradePersonalToTeamApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/UserDetailsApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/authenticated/UserSearchApiV15.kt
+177 −0 ...n/kotlin/com/wire/kalium/network/api/v15/authenticated/networkContainer/AuthenticatedNetworkContainerV15.kt
+25 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/unauthenticated/DomainLookupApiV15.kt
+25 −0 ...etwork/src/commonMain/kotlin/com/wire/kalium/network/api/v15/unauthenticated/GetDomainRegistrationApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/unauthenticated/LoginApiV15.kt
+26 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/unauthenticated/RegisterApiV15.kt
+52 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/unauthenticated/SSOLoginApiV15.kt
+25 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/api/v15/unauthenticated/VerificationCodeApiV15.kt
+92 −0 ...tlin/com/wire/kalium/network/api/v15/unauthenticated/networkContainer/UnauthenticatedNetworkContainerV15.kt
+11 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/networkContainer/AuthenticatedNetworkContainer.kt
+9 −0 data/network/src/commonMain/kotlin/com/wire/kalium/network/networkContainer/UnauthenticatedNetworkContainer.kt
+233 −12 data/network/src/commonTest/kotlin/com/wire/kalium/api/v0/nomaddevice/NomadDeviceSyncApiV0Test.kt
+24 −8 data/network/src/commonTest/kotlin/com/wire/kalium/api/v0/user/login/SSOLoginApiV0Test.kt
+84 −0 data/network/src/commonTest/kotlin/com/wire/kalium/api/v15/user/login/SSOLoginApiV15Test.kt
+3 −0 data/persistence/src/commonMain/db_user/com/wire/kalium/persistence/Messages.sq
+3 −2 data/persistence/src/commonMain/db_user/com/wire/kalium/persistence/RemotebackupChangeLog.sq
+1 −1 data/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/backup/ChangeLogSyncBatch.kt
+2 −1 .../persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/backup/ConversationMetadataSyncEntity.kt
+3 −3 data/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/backup/RemoteBackupChangeLogDAOImpl.kt
+6 −4 data/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/backup/RemoteBackupChangeLogMapper.kt
+5 −0 data/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/conversation/ConversationDAO.kt
+40 −0 data/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/conversation/ConversationDAOImpl.kt
+1 −0 data/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageDAO.kt
+9 −1 data/persistence/src/commonMain/kotlin/com/wire/kalium/persistence/dao/message/MessageDAOImpl.kt
+23 −0 data/persistence/src/commonTest/kotlin/com/wire/kalium/persistence/dao/ConversationDAOTest.kt
+3 −3 domain/nomaddevice/src/commonMain/kotlin/com/wire/kalium/nomaddevice/NomadAllMessagesMapper.kt
+88 −0 ...in/nomaddevice/src/commonMain/kotlin/com/wire/kalium/nomaddevice/NomadConversationMetadataSyncRepository.kt
+7 −6 domain/nomaddevice/src/commonMain/kotlin/com/wire/kalium/nomaddevice/NomadRemoteBackupChangeLogEventMapper.kt
+1 −1 ...n/nomaddevice/src/commonMain/kotlin/com/wire/kalium/nomaddevice/NomadRemoteBackupChangeLogSyncRepository.kt
+2 −1 domain/nomaddevice/src/commonMain/kotlin/com/wire/kalium/nomaddevice/SyncNomadAllMessagesUseCase.kt
+95 −0 domain/nomaddevice/src/commonMain/kotlin/com/wire/kalium/nomaddevice/SyncNomadConversationMetadataUseCase.kt
+3 −1 domain/nomaddevice/src/commonTest/kotlin/com/wire/kalium/nomaddevice/NomadAllMessagesMapperTest.kt
+160 −0 ...omaddevice/src/commonTest/kotlin/com/wire/kalium/nomaddevice/NomadConversationMetadataSyncRepositoryTest.kt
+38 −8 domain/nomaddevice/src/commonTest/kotlin/com/wire/kalium/nomaddevice/SyncNomadAllMessagesUseCaseTest.kt
+124 −0 ...n/nomaddevice/src/commonTest/kotlin/com/wire/kalium/nomaddevice/SyncNomadConversationMetadataUseCaseTest.kt
+31 −16 .../nomaddevice/src/commonTest/kotlin/com/wire/kalium/nomaddevice/SyncNomadRemoteBackupChangeLogUseCaseTest.kt
+56 −0 ...rc/androidMain/kotlin/com/wire/kalium/logic/feature/message/FetchOlderNomadMessagesByConversationUseCase.kt
+3 −0 logic/src/androidMain/kotlin/com/wire/kalium/logic/feature/message/MessageScopeExtensions.kt
+7 −1 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/MessageRepository.kt
+25 −1 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/MessageRepositoryExtensions.kt
+220 −0 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/message/paging/NomadMessagePagingCoordinator.kt
+17 −2 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/UserSessionScope.kt
+1 −1 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/backup/BackupAndUploadCryptoStateUseCase.kt
+18 −3 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/backup/BackupCryptoDBUseCase.kt
+35 −10 logic/src/commonMain/kotlin/com/wire/kalium/logic/sync/slow/SyncNomadMessagesDuringSlowSyncUseCase.kt
+213 −0 logic/src/commonTest/kotlin/com/wire/kalium/logic/data/message/paging/NomadMessagePagingCoordinatorTest.kt
+7 −0 logic/src/commonTest/kotlin/com/wire/kalium/logic/fakes/FakeMessageRepositoryExtensions.kt
+78 −18 logic/src/commonTest/kotlin/com/wire/kalium/logic/message/MessageRepositoryExtensionsTest.kt
+139 −4 logic/src/jvmTest/kotlin/com/wire/kalium/logic/sync/slow/SyncNomadMessagesDuringSlowSyncUseCaseTest.kt
+26 −4 test/benchmarks/build.gradle.kts
+24 −0 test/benchmarks/src/commonMain/kotlin/com/wire/kalium/benchmarks/persistence/BenchmarkPagingAccess.kt
+197 −0 test/benchmarks/src/commonMain/kotlin/com/wire/kalium/benchmarks/persistence/MessageReadBenchmark.kt
+567 −0 test/benchmarks/src/commonMain/kotlin/com/wire/kalium/benchmarks/persistence/MessageReadBenchmarkData.kt
Loading