diff --git a/app/src/androidTest/kotlin/com/wire/android/TestCoreLogicModule.kt b/app/src/androidTest/kotlin/com/wire/android/TestCoreLogicModule.kt index 016c7d3c740..1bbe357cc90 100644 --- a/app/src/androidTest/kotlin/com/wire/android/TestCoreLogicModule.kt +++ b/app/src/androidTest/kotlin/com/wire/android/TestCoreLogicModule.kt @@ -26,7 +26,6 @@ import com.wire.android.di.NoSession import com.wire.android.util.UserAgentProvider import com.wire.kalium.logic.CoreLogic import com.wire.kalium.logic.data.id.QualifiedIdMapper -import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl import com.wire.kalium.logic.feature.asset.AudioNormalizedLoudnessBuilder import com.wire.kalium.logic.feature.server.ServerConfigForAccountUseCase import com.wire.kalium.logic.feature.session.GetSessionsUseCase @@ -111,7 +110,7 @@ class TestCoreLogicModule { @NoSession @Singleton @Provides - fun provideNoSessionQualifiedIdMapper(): QualifiedIdMapper = QualifiedIdMapperImpl(null) + fun provideNoSessionQualifiedIdMapper(): QualifiedIdMapper = QualifiedIdMapper(null) @Singleton @Provides diff --git a/app/src/main/kotlin/com/wire/android/di/CoreLogicModule.kt b/app/src/main/kotlin/com/wire/android/di/CoreLogicModule.kt index de5fab84c52..bede7f7fae2 100644 --- a/app/src/main/kotlin/com/wire/android/di/CoreLogicModule.kt +++ b/app/src/main/kotlin/com/wire/android/di/CoreLogicModule.kt @@ -27,7 +27,6 @@ import com.wire.kalium.logic.CoreLogic import com.wire.kalium.logic.data.asset.KaliumFileSystem import com.wire.kalium.logic.data.id.FederatedIdMapper import com.wire.kalium.logic.data.id.QualifiedIdMapper -import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl import com.wire.kalium.logic.data.user.UserId import com.wire.kalium.logic.feature.analytics.GetCurrentAnalyticsTrackingIdentifierUseCase import com.wire.kalium.logic.feature.asset.AudioNormalizedLoudnessBuilder @@ -140,7 +139,7 @@ class CoreLogicModule { @NoSession @Singleton @Provides - fun provideNoSessionQualifiedIdMapper(): QualifiedIdMapper = QualifiedIdMapperImpl(null) + fun provideNoSessionQualifiedIdMapper(): QualifiedIdMapper = QualifiedIdMapper(null) @Singleton @Provides diff --git a/app/src/main/kotlin/com/wire/android/ui/calling/CallActivity.kt b/app/src/main/kotlin/com/wire/android/ui/calling/CallActivity.kt index 022ee78674f..925f72b3bbf 100644 --- a/app/src/main/kotlin/com/wire/android/ui/calling/CallActivity.kt +++ b/app/src/main/kotlin/com/wire/android/ui/calling/CallActivity.kt @@ -27,7 +27,7 @@ import androidx.lifecycle.lifecycleScope import com.wire.android.ui.AppLockActivity import com.wire.android.ui.common.setupOrientationForDevice import com.wire.android.util.SwitchAccountObserver -import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl +import com.wire.kalium.logic.data.id.QualifiedIdMapper import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch import javax.inject.Inject @@ -46,12 +46,13 @@ abstract class CallActivity : AppCompatActivity() { } private val callActivityViewModel: CallActivityViewModel by viewModels() - protected val qualifiedIdMapper = QualifiedIdMapperImpl(null) + protected val qualifiedIdMapper = QualifiedIdMapper(null) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setupOrientationForDevice() } + fun switchAccountIfNeeded(userId: String?) { userId?.let { qualifiedIdMapper.fromStringToQualifiedID(it).run { diff --git a/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/recordaudio/AudioMediaRecorder.kt b/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/recordaudio/AudioMediaRecorder.kt index 34a30d636f1..57fafe30245 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/recordaudio/AudioMediaRecorder.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/messagecomposer/recordaudio/AudioMediaRecorder.kt @@ -31,7 +31,7 @@ import com.wire.android.appLogger import com.wire.android.util.dispatchers.DispatcherProvider import com.wire.android.util.fileDateTime import com.wire.kalium.logic.data.asset.KaliumFileSystem -import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCaseImpl.Companion.ASSET_SIZE_DEFAULT_LIMIT_BYTES +import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCase.AssetSizeLimits.ASSET_SIZE_DEFAULT_LIMIT_BYTES import com.wire.kalium.util.DateTimeUtil import dagger.hilt.android.scopes.ViewModelScoped import kotlinx.coroutines.CoroutineScope diff --git a/app/src/main/kotlin/com/wire/android/util/deeplink/DeepLinkProcessor.kt b/app/src/main/kotlin/com/wire/android/util/deeplink/DeepLinkProcessor.kt index 1417498c10c..7f79d722ac5 100644 --- a/app/src/main/kotlin/com/wire/android/util/deeplink/DeepLinkProcessor.kt +++ b/app/src/main/kotlin/com/wire/android/util/deeplink/DeepLinkProcessor.kt @@ -30,7 +30,7 @@ import com.wire.kalium.logic.CoreLogic import com.wire.kalium.logic.data.auth.AccountInfo import com.wire.kalium.logic.data.id.ConversationId import com.wire.kalium.logic.data.id.QualifiedID -import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl +import com.wire.kalium.logic.data.id.QualifiedIdMapper import com.wire.kalium.logic.data.id.toQualifiedID import com.wire.kalium.logic.feature.session.CurrentSessionResult import com.wire.kalium.logic.feature.session.CurrentSessionUseCase @@ -84,7 +84,7 @@ class DeepLinkProcessor @Inject constructor( private val currentSession: CurrentSessionUseCase, @KaliumCoreLogic private val coreLogic: CoreLogic, ) { - private val qualifiedIdMapper = QualifiedIdMapperImpl(null) + private val qualifiedIdMapper = QualifiedIdMapper(null) suspend operator fun invoke(uri: Uri? = null, action: String? = null): DeepLinkResult { return when (val sessionResult = currentSession()) { diff --git a/app/src/main/kotlin/com/wire/android/util/deeplink/UserLinkQRMapper.kt b/app/src/main/kotlin/com/wire/android/util/deeplink/UserLinkQRMapper.kt index 753923bdf42..932d72546eb 100644 --- a/app/src/main/kotlin/com/wire/android/util/deeplink/UserLinkQRMapper.kt +++ b/app/src/main/kotlin/com/wire/android/util/deeplink/UserLinkQRMapper.kt @@ -19,11 +19,11 @@ package com.wire.android.util.deeplink import android.net.Uri import com.wire.kalium.logic.data.id.QualifiedID -import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl +import com.wire.kalium.logic.data.id.QualifiedIdMapper object UserLinkQRMapper { - val qualifiedIdMapper = QualifiedIdMapperImpl(null) + val qualifiedIdMapper = QualifiedIdMapper(null) fun fromDeepLinkToQualifiedId(uri: Uri, defaultDomain: String): UserLinkQRResult { val segments = uri.pathSegments diff --git a/app/src/main/kotlin/com/wire/android/util/lifecycle/SyncLifecycleManager.kt b/app/src/main/kotlin/com/wire/android/util/lifecycle/SyncLifecycleManager.kt index 03aadca0878..af79f250256 100644 --- a/app/src/main/kotlin/com/wire/android/util/lifecycle/SyncLifecycleManager.kt +++ b/app/src/main/kotlin/com/wire/android/util/lifecycle/SyncLifecycleManager.kt @@ -21,14 +21,12 @@ package com.wire.android.util.lifecycle import com.wire.android.appLogger import com.wire.android.di.KaliumCoreLogic import com.wire.android.util.CurrentScreenManager -import com.wire.kalium.common.functional.Either import com.wire.kalium.common.functional.onFailure import com.wire.kalium.common.functional.onSuccess import com.wire.kalium.logger.KaliumLogger.Companion.ApplicationFlow.SYNC import com.wire.kalium.logger.obfuscateDomain import com.wire.kalium.logger.obfuscateId import com.wire.kalium.logic.CoreLogic -import com.wire.kalium.logic.data.auth.AccountInfo import com.wire.kalium.logic.data.user.UserId import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.coroutineScope @@ -36,7 +34,7 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged -import kotlinx.coroutines.flow.filterIsInstance +import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import javax.inject.Inject @@ -60,26 +58,32 @@ class SyncLifecycleManager @Inject constructor( * Should be called only once on a global level */ suspend fun observeAppLifecycle() { - coreLogic.getGlobalScope().sessionRepository.allValidSessionsFlow() - .filterIsInstance>>() - .map { it.value } - .combine(currentScreenManager.isAppVisibleFlow(), ::Pair) - .distinctUntilChanged() - .collectLatest { (accounts, isAppVisible) -> - if (!isAppVisible) { - logger.i("Not running foreground sync request for users, as App is not visible.") - return@collectLatest + coreLogic.getGlobalScope().observeValidAccounts() + .filter { pairs -> pairs.isNotEmpty() } + .map { pairs -> + pairs.map { (selfUser, _) -> + selfUser.id } - coroutineScope { - accounts.forEach { accountInfo -> - val userId = accountInfo.userId - launch { - logger.i("!!!!! Starting foreground sync request for user ${userId.value.obfuscateId()}.") - coreLogic.getSessionScope(userId).syncExecutor.request { - awaitCancellation() + }.combine(currentScreenManager.isAppVisibleFlow(), ::Pair) + .distinctUntilChanged() + .collectLatest { (userIds, isAppVisible) -> + if (isAppVisible) { + logger.i( + "App moved to foreground, " + + "starting sync requests for users: ${userIds.joinToString { it.value.obfuscateId() }}" + ) + coroutineScope { + userIds.forEach { userId -> + launch { + logger.i("!!!!! Starting foreground sync request for user ${userId.value.obfuscateId()}.") + coreLogic.getSessionScope(userId).syncExecutor.request { + awaitCancellation() + } } } } + } else { + logger.i("App moved to background, no longer running foreground sync requests for users.") } } } diff --git a/app/src/main/kotlin/com/wire/android/workmanager/worker/DeleteConversationLocallyWorker.kt b/app/src/main/kotlin/com/wire/android/workmanager/worker/DeleteConversationLocallyWorker.kt index b1a90563660..59aad143591 100644 --- a/app/src/main/kotlin/com/wire/android/workmanager/worker/DeleteConversationLocallyWorker.kt +++ b/app/src/main/kotlin/com/wire/android/workmanager/worker/DeleteConversationLocallyWorker.kt @@ -39,7 +39,7 @@ import com.wire.android.notification.openAppPendingIntent import com.wire.kalium.common.functional.fold import com.wire.kalium.logic.CoreLogic import com.wire.kalium.logic.data.id.ConversationId -import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl +import com.wire.kalium.logic.data.id.QualifiedIdMapper import com.wire.kalium.logic.data.user.UserId import com.wire.kalium.logic.feature.session.DoesValidSessionExistResult import dagger.assisted.Assisted @@ -74,7 +74,7 @@ class DeleteConversationLocallyWorker @AssistedInject constructor( if (userIdString == null || conversationIdString == null) { return@coroutineScope Result.failure() // If either ID is not provided, fail the work } - val qualifiedIdMapper = QualifiedIdMapperImpl(null) + val qualifiedIdMapper = QualifiedIdMapper(null) val conversationId = qualifiedIdMapper.fromStringToQualifiedID(conversationIdString) val userId = qualifiedIdMapper.fromStringToQualifiedID(userIdString) coreLogic.getGlobalScope().doesValidSessionExist(userId).let { diff --git a/app/src/test/kotlin/com/wire/android/navigation/NavigationUtilsTest.kt b/app/src/test/kotlin/com/wire/android/navigation/NavigationUtilsTest.kt index 97f32e2b119..9e68a529832 100644 --- a/app/src/test/kotlin/com/wire/android/navigation/NavigationUtilsTest.kt +++ b/app/src/test/kotlin/com/wire/android/navigation/NavigationUtilsTest.kt @@ -21,7 +21,7 @@ package com.wire.android.navigation import com.wire.android.model.ImageAsset import com.wire.android.model.parseIntoPrivateImageAsset import com.wire.kalium.logic.data.id.QualifiedID -import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl +import com.wire.kalium.logic.data.id.QualifiedIdMapper import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows @@ -30,7 +30,7 @@ internal class NavigationUtilsTest { @Test fun `Given some correct string, when calling parseIntoPrivateImageAsset, then it correctly parses it to PrivateImageAsset`() { - val qualifiedIdMapper = QualifiedIdMapperImpl(null) + val qualifiedIdMapper = QualifiedIdMapper(null) // Given val mockConversationIdValue = "mocked-conversation-id-value" @@ -55,7 +55,7 @@ internal class NavigationUtilsTest { @Test fun `Given an incorrect string, when parsing it to PrivateImageAsset, then it throws an exception`() { - val qualifiedIdMapper = QualifiedIdMapperImpl(null) + val qualifiedIdMapper = QualifiedIdMapper(null) // Given val mockWrongImagePrivateAssetString = "wrong-private-asset@image" diff --git a/app/src/test/kotlin/com/wire/android/notification/CallNotificationManagerTest.kt b/app/src/test/kotlin/com/wire/android/notification/CallNotificationManagerTest.kt index d850720e250..ececa4665d6 100644 --- a/app/src/test/kotlin/com/wire/android/notification/CallNotificationManagerTest.kt +++ b/app/src/test/kotlin/com/wire/android/notification/CallNotificationManagerTest.kt @@ -31,7 +31,7 @@ import com.wire.kalium.logic.data.call.Call import com.wire.kalium.logic.data.call.CallStatus import com.wire.kalium.logic.data.conversation.Conversation import com.wire.kalium.logic.data.id.ConversationId -import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl +import com.wire.kalium.logic.data.id.QualifiedIdMapper import com.wire.kalium.logic.data.user.UserId import com.wire.kalium.logic.feature.session.CurrentSessionResult import io.mockk.MockKAnnotations @@ -491,7 +491,7 @@ class CallNotificationManagerTest { dispatcherProvider = dispatcherProvider, builder = callNotificationBuilder, coreLogic = coreLogic, - qualifiedIdMapper = QualifiedIdMapperImpl(TestUser.SELF_USER_ID), + qualifiedIdMapper = QualifiedIdMapper(TestUser.SELF_USER_ID), ) } diff --git a/app/src/test/kotlin/com/wire/android/ui/home/conversations/details/updatechannelaccess/UpdateChannelAccessViewModelTest.kt b/app/src/test/kotlin/com/wire/android/ui/home/conversations/details/updatechannelaccess/UpdateChannelAccessViewModelTest.kt index bb2ccad1fdc..517e25a8fd6 100644 --- a/app/src/test/kotlin/com/wire/android/ui/home/conversations/details/updatechannelaccess/UpdateChannelAccessViewModelTest.kt +++ b/app/src/test/kotlin/com/wire/android/ui/home/conversations/details/updatechannelaccess/UpdateChannelAccessViewModelTest.kt @@ -23,7 +23,7 @@ import com.wire.android.ui.destinations.ChannelAccessOnUpdateScreenDestination import com.wire.android.ui.home.newconversation.channelaccess.ChannelAccessType import com.wire.android.ui.home.newconversation.channelaccess.ChannelAddPermissionType import com.wire.android.ui.navArgs -import com.wire.kalium.logic.data.id.QualifiedIdMapperImpl +import com.wire.kalium.logic.data.id.QualifiedIdMapper import com.wire.kalium.logic.feature.conversation.channel.UpdateChannelAddPermissionUseCase import io.mockk.MockKAnnotations import io.mockk.coEvery @@ -37,8 +37,8 @@ import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.resetMain import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.setMain -import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.AfterEach +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -104,7 +104,7 @@ class UpdateChannelAccessViewModelTest { UpdateChannelAccessViewModel( updateChannelAddPermission = updateChannelAddPermission, savedStateHandle = savedStateHandle, - qualifiedIdMapper = QualifiedIdMapperImpl(TestUser.SELF_USER_ID) + qualifiedIdMapper = QualifiedIdMapper(TestUser.SELF_USER_ID) ) } @@ -124,8 +124,8 @@ class UpdateChannelAccessViewModelTest { fun withUpdateChannelAddPermissionUseCaseReturning( result: UpdateChannelAddPermissionUseCase.UpdateChannelAddPermissionUseCaseResult ) = apply { - coEvery { updateChannelAddPermission(any(), any()) } returns result - } + coEvery { updateChannelAddPermission(any(), any()) } returns result + } fun arrange() = this to viewModel } diff --git a/app/src/test/kotlin/com/wire/android/ui/home/conversations/usecase/HandleUriAssetUseCaseTest.kt b/app/src/test/kotlin/com/wire/android/ui/home/conversations/usecase/HandleUriAssetUseCaseTest.kt index 939ece4878e..f6910fe9735 100644 --- a/app/src/test/kotlin/com/wire/android/ui/home/conversations/usecase/HandleUriAssetUseCaseTest.kt +++ b/app/src/test/kotlin/com/wire/android/ui/home/conversations/usecase/HandleUriAssetUseCaseTest.kt @@ -26,7 +26,7 @@ import com.wire.android.ui.home.conversations.model.AssetBundle import com.wire.android.util.FileManager import com.wire.kalium.logic.data.asset.AttachmentType import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCase -import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCaseImpl +import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCase.AssetSizeLimits.ASSET_SIZE_DEFAULT_LIMIT_BYTES import io.mockk.MockKAnnotations import io.mockk.coEvery import io.mockk.coVerify @@ -49,7 +49,7 @@ class HandleUriAssetUseCaseTest { fun `given an invalid url schema, when invoked, then result should not succeed`() = runTest(dispatcher) { // Given - val limit = GetAssetSizeLimitUseCaseImpl.ASSET_SIZE_DEFAULT_LIMIT_BYTES + val limit = ASSET_SIZE_DEFAULT_LIMIT_BYTES val (_, useCase) = Arrangement() .withGetAssetSizeLimitUseCase(true, limit) .withGetAssetBundleFromUri(null) @@ -66,7 +66,7 @@ class HandleUriAssetUseCaseTest { fun `given a user picks an image asset less than limit, when invoked, then result should succeed`() = runTest(dispatcher) { // Given - val limit = GetAssetSizeLimitUseCaseImpl.ASSET_SIZE_DEFAULT_LIMIT_BYTES + val limit = ASSET_SIZE_DEFAULT_LIMIT_BYTES val mockedAttachment = AssetBundle( "key", "image/jpeg", @@ -91,7 +91,7 @@ class HandleUriAssetUseCaseTest { fun `given a user picks an image asset larger than limit, when invoked, then result is asset too large failure`() = runTest(dispatcher) { // Given - val limit = GetAssetSizeLimitUseCaseImpl.ASSET_SIZE_DEFAULT_LIMIT_BYTES + val limit = ASSET_SIZE_DEFAULT_LIMIT_BYTES val mockedAttachment = AssetBundle( "key", "image/jpeg", @@ -116,7 +116,7 @@ class HandleUriAssetUseCaseTest { fun `given that a user picks too large asset that needs saving if invalid, when invoked, then saveToExternalMediaStorage is called`() = runTest(dispatcher) { // Given - val limit = GetAssetSizeLimitUseCaseImpl.ASSET_SIZE_DEFAULT_LIMIT_BYTES + val limit = ASSET_SIZE_DEFAULT_LIMIT_BYTES val mockedAttachment = AssetBundle( "key", "file/x-zip", @@ -151,7 +151,7 @@ class HandleUriAssetUseCaseTest { fun `given that a user picks asset, when getting uri returns null, then it should return error`() = runTest(dispatcher) { // Given - val limit = GetAssetSizeLimitUseCaseImpl.ASSET_SIZE_DEFAULT_LIMIT_BYTES + val limit = ASSET_SIZE_DEFAULT_LIMIT_BYTES val (_, useCase) = Arrangement() .withGetAssetBundleFromUri(null) .withGetAssetSizeLimitUseCase(false, limit) diff --git a/app/src/test/kotlin/com/wire/android/ui/home/messagecomposer/recordaudio/RecordAudioViewModelTest.kt b/app/src/test/kotlin/com/wire/android/ui/home/messagecomposer/recordaudio/RecordAudioViewModelTest.kt index 703e833257e..9d9350da14a 100644 --- a/app/src/test/kotlin/com/wire/android/ui/home/messagecomposer/recordaudio/RecordAudioViewModelTest.kt +++ b/app/src/test/kotlin/com/wire/android/ui/home/messagecomposer/recordaudio/RecordAudioViewModelTest.kt @@ -36,7 +36,7 @@ import com.wire.kalium.logic.data.id.ConversationId import com.wire.kalium.logic.data.user.UserId import com.wire.kalium.logic.feature.asset.AudioNormalizedLoudnessBuilder import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCase -import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCaseImpl +import com.wire.kalium.logic.feature.asset.GetAssetSizeLimitUseCase.AssetSizeLimits.ASSET_SIZE_DEFAULT_LIMIT_BYTES import com.wire.kalium.logic.feature.call.usecase.ObserveEstablishedCallsUseCase import io.mockk.MockKAnnotations import io.mockk.coEvery @@ -408,7 +408,7 @@ class RecordAudioViewModelTest { .tempFilePath("temp_recording.wav") coEvery { audioMediaRecorder.getMaxFileSizeReached() } returns flowOf( RecordAudioDialogState.MaxFileSizeReached( - maxSize = GetAssetSizeLimitUseCaseImpl.ASSET_SIZE_DEFAULT_LIMIT_BYTES + maxSize = ASSET_SIZE_DEFAULT_LIMIT_BYTES ) ) coEvery { generateAudioFileWithEffects(any(), any(), any()) } returns Unit diff --git a/app/src/test/kotlin/com/wire/android/util/lifecycle/SyncLifecycleManagerTest.kt b/app/src/test/kotlin/com/wire/android/util/lifecycle/SyncLifecycleManagerTest.kt index d413c8fb75e..72671ab7392 100644 --- a/app/src/test/kotlin/com/wire/android/util/lifecycle/SyncLifecycleManagerTest.kt +++ b/app/src/test/kotlin/com/wire/android/util/lifecycle/SyncLifecycleManagerTest.kt @@ -18,14 +18,12 @@ package com.wire.android.util.lifecycle +import com.wire.android.framework.TestUser import com.wire.android.framework.fake.FakeSyncExecutor import com.wire.android.util.CurrentScreenManager import com.wire.kalium.logic.CoreLogic -import com.wire.kalium.logic.data.auth.AccountInfo -import com.wire.kalium.logic.data.session.SessionRepository -import com.wire.kalium.logic.data.user.UserId import com.wire.kalium.logic.feature.UserSessionScope -import com.wire.kalium.common.functional.Either +import com.wire.kalium.logic.feature.user.ObserveValidAccountsUseCase import io.mockk.MockKAnnotations import io.mockk.coEvery import io.mockk.every @@ -46,7 +44,7 @@ class SyncLifecycleManagerTest { .withAppInTheForeground() .arrange() - connectionPolicyManager.syncTemporarily(USER_ID) + connectionPolicyManager.syncTemporarily(TestUser.SELF_USER_ID) assertEquals(1, arrangement.syncExecutor.requestCount) assertEquals(1, arrangement.syncExecutor.waitUntilLiveCount) @@ -90,7 +88,7 @@ class SyncLifecycleManagerTest { val observingLifecycleJob = launch { syncLifecycleManager.observeAppLifecycle() } - syncLifecycleManager.syncTemporarily(USER_ID) + syncLifecycleManager.syncTemporarily(TestUser.SELF_USER_ID) advanceUntilIdle() observingLifecycleJob.cancel() @@ -110,7 +108,7 @@ class SyncLifecycleManagerTest { lateinit var userSessionScope: UserSessionScope @MockK - lateinit var sessionRepository: SessionRepository + lateinit var observeValidAccountsUseCase: ObserveValidAccountsUseCase var syncExecutor = FakeSyncExecutor() @@ -120,11 +118,12 @@ class SyncLifecycleManagerTest { init { MockKAnnotations.init(this, relaxUnitFun = true) - - every { coreLogic.getGlobalScope().sessionRepository } returns sessionRepository - every { coreLogic.getSessionScope(USER_ID) } returns userSessionScope - coEvery { sessionRepository.allValidSessionsFlow() } returns flowOf( - Either.Right(listOf(AccountInfo.Valid(userId = USER_ID))) + every { coreLogic.getGlobalScope().observeValidAccounts } returns observeValidAccountsUseCase + every { coreLogic.getSessionScope(TestUser.SELF_USER_ID) } returns userSessionScope + coEvery { observeValidAccountsUseCase.invoke() } returns flowOf( + listOf( + TestUser.SELF_USER to null + ) ) } @@ -140,8 +139,4 @@ class SyncLifecycleManagerTest { every { userSessionScope.syncExecutor } returns syncExecutor } } - - companion object { - private val USER_ID = UserId("user", "domain") - } } diff --git a/core/ui-common/src/main/kotlin/com/wire/android/util/ui/WireSessionImageLoader.kt b/core/ui-common/src/main/kotlin/com/wire/android/util/ui/WireSessionImageLoader.kt index 17366c35b4b..e979ad68c28 100644 --- a/core/ui-common/src/main/kotlin/com/wire/android/util/ui/WireSessionImageLoader.kt +++ b/core/ui-common/src/main/kotlin/com/wire/android/util/ui/WireSessionImageLoader.kt @@ -42,7 +42,7 @@ import com.wire.android.model.ImageAsset import com.wire.kalium.logic.feature.asset.DeleteAssetUseCase import com.wire.kalium.logic.feature.asset.GetAvatarAssetUseCase import com.wire.kalium.logic.feature.asset.GetMessageAssetUseCase -import com.wire.kalium.logic.util.ExponentialDurationHelperImpl +import com.wire.kalium.logic.util.ExponentialDurationHelper import com.wire.kalium.network.NetworkState import com.wire.kalium.network.NetworkStateObserver import kotlinx.coroutines.delay @@ -80,7 +80,7 @@ class WireSessionImageLoader( withCrossfadeAnimation: Boolean = false, ): Painter { var retryHash by remember { mutableStateOf(0) } - val exponentialDurationHelper = remember { ExponentialDurationHelperImpl(MIN_RETRY_DELAY, MAX_RETRY_DELAY) } + val exponentialDurationHelper = remember { ExponentialDurationHelper(MIN_RETRY_DELAY, MAX_RETRY_DELAY) } val painter = rememberAsyncImagePainter( model = ImageRequest.Builder(LocalContext.current) .memoryCacheKey(asset?.uniqueKey) diff --git a/kalium b/kalium index ced16438c79..a7b551cc572 160000 --- a/kalium +++ b/kalium @@ -1 +1 @@ -Subproject commit ced16438c7988cbdd9e4d51b1aee22a02cacb260 +Subproject commit a7b551cc57277942e43cd100ab99068459a9cec2