Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 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
27 changes: 27 additions & 0 deletions app/src/main/kotlin/com/wire/android/di/CoreLogicModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,15 @@ import com.wire.kalium.logic.feature.analytics.GetCurrentAnalyticsTrackingIdenti
import com.wire.kalium.logic.feature.auth.AddAuthenticatedUserUseCase
import com.wire.kalium.logic.feature.auth.LogoutUseCase
import com.wire.kalium.logic.feature.auth.sso.ValidateSSOCodeUseCase
import com.wire.kalium.logic.feature.client.MLSClientManager
import com.wire.kalium.logic.feature.connection.BlockUserUseCase
import com.wire.kalium.logic.feature.connection.UnblockUserUseCase
import com.wire.kalium.logic.feature.conversation.ObserveOtherUserSecurityClassificationLabelUseCase
import com.wire.kalium.logic.feature.conversation.ObserveSecurityClassificationLabelUseCase
import com.wire.kalium.logic.feature.conversation.keyingmaterials.KeyingMaterialsManager
import com.wire.kalium.logic.feature.e2ei.usecase.FetchConversationMLSVerificationStatusUseCase
import com.wire.kalium.logic.feature.featureConfig.ObserveIsAppLockEditableUseCase
import com.wire.kalium.logic.feature.mlsmigration.MLSMigrationManager
import com.wire.kalium.logic.feature.selfDeletingMessages.ObserveSelfDeletionTimerSettingsForConversationUseCase
import com.wire.kalium.logic.feature.selfDeletingMessages.ObserveTeamSettingsSelfDeletingStatusUseCase
import com.wire.kalium.logic.feature.selfDeletingMessages.PersistNewSelfDeletionTimerUseCase
Expand Down Expand Up @@ -202,6 +205,30 @@ class UseCaseModule {
fun provideValidateSSOCodeUseCase(@KaliumCoreLogic coreLogic: CoreLogic): ValidateSSOCodeUseCase =
coreLogic.getGlobalScope().validateSSOCodeUseCase

@ViewModelScoped
@Provides
fun provideMLSMigrationManager(
@KaliumCoreLogic coreLogic: CoreLogic,
@CurrentAccount currentAccount: UserId
): MLSMigrationManager =
coreLogic.getSessionScope(currentAccount).mlsMigrationManager

@ViewModelScoped
@Provides
fun provideMLSClientManager(
@KaliumCoreLogic coreLogic: CoreLogic,
@CurrentAccount currentAccount: UserId
): MLSClientManager =
coreLogic.getSessionScope(currentAccount).mlsClientManager

@ViewModelScoped
@Provides
fun provideKeyingMaterialsManager(
@KaliumCoreLogic coreLogic: CoreLogic,
@CurrentAccount currentAccount: UserId
): KeyingMaterialsManager =
coreLogic.getSessionScope(currentAccount).keyingMaterialsManager

@ViewModelScoped
@Provides
fun provideValidatePasswordUseCase(@KaliumCoreLogic coreLogic: CoreLogic) =
Expand Down
13 changes: 11 additions & 2 deletions app/src/main/kotlin/com/wire/android/ui/home/AppSyncViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,12 @@ package com.wire.android.ui.home
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.wire.android.appLogger
import com.wire.kalium.logic.feature.client.MLSClientManager
import com.wire.kalium.logic.feature.conversation.keyingmaterials.KeyingMaterialsManager
import com.wire.kalium.logic.feature.e2ei.SyncCertificateRevocationListUseCase
import com.wire.kalium.logic.feature.e2ei.usecase.ObserveCertificateRevocationForSelfClientUseCase
import com.wire.kalium.logic.feature.featureConfig.FeatureFlagsSyncWorker
import com.wire.kalium.logic.feature.mlsmigration.MLSMigrationManager
import com.wire.kalium.logic.feature.server.UpdateApiVersionsUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Job
Expand All @@ -39,8 +42,11 @@ class AppSyncViewModel @Inject constructor(
private val syncCertificateRevocationListUseCase: SyncCertificateRevocationListUseCase,
private val observeCertificateRevocationForSelfClient: ObserveCertificateRevocationForSelfClientUseCase,
private val featureFlagsSyncWorker: FeatureFlagsSyncWorker,
private val updateApiVersions: UpdateApiVersionsUseCase
) : ViewModel() {
private val updateApiVersions: UpdateApiVersionsUseCase,
private val mLSMigrationManager: MLSMigrationManager,
private val keyingMaterialsManager: KeyingMaterialsManager,
private val mLSClientManager: MLSClientManager,
) : ViewModel() {

private val minIntervalBetweenPulls: Duration = MIN_INTERVAL_BETWEEN_PULLS

Expand Down Expand Up @@ -77,6 +83,9 @@ class AppSyncViewModel @Inject constructor(
viewModelScope.launch { featureFlagsSyncWorker.execute() },
viewModelScope.launch { observeCertificateRevocationForSelfClient.invoke() },
viewModelScope.launch { updateApiVersions() },
viewModelScope.launch { mLSClientManager() },
viewModelScope.launch { mLSMigrationManager() },
viewModelScope.launch { keyingMaterialsManager() },
).joinAll()
} catch (e: Exception) {
appLogger.e("Error while syncing app config", e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,14 @@
*/
package com.wire.android.ui.home

import androidx.compose.ui.Modifier
import com.wire.android.config.CoroutineTestExtension
import com.wire.kalium.logic.feature.client.MLSClientManager
import com.wire.kalium.logic.feature.conversation.keyingmaterials.KeyingMaterialsManager
import com.wire.kalium.logic.feature.e2ei.SyncCertificateRevocationListUseCase
import com.wire.kalium.logic.feature.e2ei.usecase.ObserveCertificateRevocationForSelfClientUseCase
import com.wire.kalium.logic.feature.featureConfig.FeatureFlagsSyncWorker
import com.wire.kalium.logic.feature.mlsmigration.MLSMigrationManager
import com.wire.kalium.logic.feature.server.UpdateApiVersionsUseCase
import io.mockk.MockKAnnotations
import io.mockk.coEvery
Expand All @@ -42,6 +46,9 @@ class AppSyncViewModelTest {
withFeatureFlagsSyncWorker()
withSyncCertificateRevocationListUseCase()
withUpdateApiVersions()
withMlsClientManager()
withMlsMigrationManager()
withKeyingMaterialsManager()
}

viewModel.startSyncingAppConfig()
Expand All @@ -51,6 +58,9 @@ class AppSyncViewModelTest {
coVerify { arrangement.syncCertificateRevocationListUseCase.invoke() }
coVerify { arrangement.featureFlagsSyncWorker.execute() }
coVerify { arrangement.updateApiVersions() }
coVerify { arrangement.mlsClientManager() }
coVerify { arrangement.mlsMigrationManager() }
coVerify { arrangement.keyingMaterialsManager() }
}

@Test
Expand All @@ -60,6 +70,9 @@ class AppSyncViewModelTest {
withFeatureFlagsSyncWorker(1000)
withSyncCertificateRevocationListUseCase(1000)
withUpdateApiVersions(1000)
withMlsClientManager(1000)
withMlsMigrationManager(1000)
withKeyingMaterialsManager(1000)
}

viewModel.startSyncingAppConfig()
Expand All @@ -71,6 +84,9 @@ class AppSyncViewModelTest {
coVerify(exactly = 1) { arrangement.syncCertificateRevocationListUseCase.invoke() }
coVerify(exactly = 1) { arrangement.featureFlagsSyncWorker.execute() }
coVerify(exactly = 1) { arrangement.updateApiVersions() }
coVerify(exactly = 1) { arrangement.mlsClientManager() }
coVerify(exactly = 1) { arrangement.mlsMigrationManager() }
coVerify(exactly = 1) { arrangement.keyingMaterialsManager() }
}

private class Arrangement {
Expand All @@ -87,6 +103,15 @@ class AppSyncViewModelTest {
@MockK
lateinit var updateApiVersions: UpdateApiVersionsUseCase

@MockK
lateinit var mlsClientManager: MLSClientManager

@MockK
lateinit var mlsMigrationManager: MLSMigrationManager

@MockK
lateinit var keyingMaterialsManager: KeyingMaterialsManager

init {
MockKAnnotations.init(this)
}
Expand All @@ -95,10 +120,12 @@ class AppSyncViewModelTest {
syncCertificateRevocationListUseCase,
observeCertificateRevocationForSelfClient,
featureFlagsSyncWorker,
updateApiVersions
updateApiVersions,
mLSClientManager = mlsClientManager,
mLSMigrationManager = mlsMigrationManager,
keyingMaterialsManager = keyingMaterialsManager
)

@OptIn(InternalCoroutinesApi::class)
fun withObserveCertificateRevocationForSelfClient(delayMs: Long = 0) {
coEvery { observeCertificateRevocationForSelfClient.invoke() } coAnswers {
delay(delayMs)
Expand All @@ -123,6 +150,24 @@ class AppSyncViewModelTest {
}
}

fun withMlsClientManager(delayMs: Long = 0) {
coEvery { mlsClientManager() } coAnswers {
delay(delayMs)
}
}

fun withMlsMigrationManager(delayMs: Long = 0) {
coEvery { mlsMigrationManager() } coAnswers {
delay(delayMs)
}
}

fun withKeyingMaterialsManager(delayMs: Long = 0) {
coEvery { keyingMaterialsManager() } coAnswers {
delay(delayMs)
}
}

fun arrange(block: Arrangement.() -> Unit) = apply(block).let {
this to viewModel
}
Expand Down
Loading