From 38fc0f838c22ddcca1c745da30d718dbbdc255cc Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 11:37:58 +0000 Subject: [PATCH 1/3] Commit with unresolved merge conflicts outside of kalium --- .../com/wire/android/di/CoreLogicModule.kt | 6 ++-- .../android/feature/DisableAppLockUseCase.kt | 7 +++-- .../appLock/set/SetLockScreenViewModel.kt | 28 +++++++++++++------ .../ui/home/settings/SettingsScreen.kt | 11 ++------ .../ui/home/settings/SettingsViewModel.kt | 21 ++++++++------ .../feature/DisableAppLockUseCaseTest.kt | 9 +++--- .../appLock/set/SetLockScreenViewModelTest.kt | 16 +++++++++-- 7 files changed, 61 insertions(+), 37 deletions(-) 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 a9f91f41ad5..0835d6ad8ff 100644 --- a/app/src/main/kotlin/com/wire/android/di/CoreLogicModule.kt +++ b/app/src/main/kotlin/com/wire/android/di/CoreLogicModule.kt @@ -35,7 +35,7 @@ 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.featureConfig.IsAppLockEditableUseCase +import com.wire.kalium.logic.feature.featureConfig.ObserveIsAppLockEditableUseCase import com.wire.kalium.logic.feature.selfDeletingMessages.ObserveSelfDeletionTimerSettingsForConversationUseCase import com.wire.kalium.logic.feature.selfDeletingMessages.ObserveTeamSettingsSelfDeletingStatusUseCase import com.wire.kalium.logic.feature.selfDeletingMessages.PersistNewSelfDeletionTimerUseCase @@ -431,7 +431,7 @@ class UseCaseModule { @ViewModelScoped @Provides - fun provideIsAppLockEditableUseCase( + fun provideObserveIsAppLockEditableUseCase( @KaliumCoreLogic coreLogic: CoreLogic - ): IsAppLockEditableUseCase = coreLogic.getGlobalScope().isAppLockEditableUseCase + ): ObserveIsAppLockEditableUseCase = coreLogic.getGlobalScope().observeIsAppLockEditableUseCase } diff --git a/app/src/main/kotlin/com/wire/android/feature/DisableAppLockUseCase.kt b/app/src/main/kotlin/com/wire/android/feature/DisableAppLockUseCase.kt index 6f6b735854a..10312cea1ca 100644 --- a/app/src/main/kotlin/com/wire/android/feature/DisableAppLockUseCase.kt +++ b/app/src/main/kotlin/com/wire/android/feature/DisableAppLockUseCase.kt @@ -18,16 +18,17 @@ package com.wire.android.feature import com.wire.android.datastore.GlobalDataStore -import com.wire.kalium.logic.feature.featureConfig.IsAppLockEditableUseCase +import com.wire.kalium.logic.feature.featureConfig.ObserveIsAppLockEditableUseCase import dagger.hilt.android.scopes.ViewModelScoped +import kotlinx.coroutines.flow.firstOrNull import javax.inject.Inject @ViewModelScoped class DisableAppLockUseCase @Inject constructor( private val dataStore: GlobalDataStore, - private val isAppLockEditableUseCase: IsAppLockEditableUseCase + private val observeIsAppLockEditableUseCase: ObserveIsAppLockEditableUseCase ) { - suspend operator fun invoke(): Boolean = if (isAppLockEditableUseCase()) { + suspend operator fun invoke(): Boolean = if (observeIsAppLockEditableUseCase().firstOrNull() == true) { dataStore.clearAppLockPasscode() true } else { diff --git a/app/src/main/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModel.kt b/app/src/main/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModel.kt index f9e26c6ebfb..b44bf79f842 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModel.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModel.kt @@ -29,9 +29,10 @@ import com.wire.android.feature.ObserveAppLockConfigUseCase import com.wire.android.util.dispatchers.DispatcherProvider import com.wire.kalium.logic.feature.applock.MarkTeamAppLockStatusAsNotifiedUseCase import com.wire.kalium.logic.feature.auth.ValidatePasswordUseCase -import com.wire.kalium.logic.feature.featureConfig.IsAppLockEditableUseCase +import com.wire.kalium.logic.feature.featureConfig.ObserveIsAppLockEditableUseCase import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.combine import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import javax.inject.Inject @@ -42,8 +43,12 @@ class SetLockScreenViewModel @Inject constructor( private val globalDataStore: GlobalDataStore, private val dispatchers: DispatcherProvider, private val observeAppLockConfig: ObserveAppLockConfigUseCase, +<<<<<<< HEAD private val isAppLockEditable: IsAppLockEditableUseCase, private val isAppLockEditableUseCase: IsAppLockEditableUseCase, +======= + private val observeIsAppLockEditable: ObserveIsAppLockEditableUseCase, +>>>>>>> b69889d3b (fix: applock toggle state when enforced and responding to changes [WPB-5751] (#2564)) private val markTeamAppLockStatusAsNotified: MarkTeamAppLockStatusAsNotifiedUseCase ) : ViewModel() { @@ -52,14 +57,15 @@ class SetLockScreenViewModel @Inject constructor( init { viewModelScope.launch { - val isEditable = isAppLockEditable() - observeAppLockConfig() - .collectLatest { - state = state.copy( - timeout = it.timeout, - isEditable = isEditable - ) - } + combine( + observeAppLockConfig(), + observeIsAppLockEditable() + ) { config, isEditable -> + SetLockCodeViewState( + timeout = config.timeout, + isEditable = isEditable + ) + }.collectLatest { state = it } } } @@ -85,7 +91,11 @@ class SetLockScreenViewModel @Inject constructor( viewModelScope.launch { withContext(dispatchers.io()) { with(globalDataStore) { +<<<<<<< HEAD val source = if (isAppLockEditableUseCase()) { +======= + val source = if (state.isEditable) { +>>>>>>> b69889d3b (fix: applock toggle state when enforced and responding to changes [WPB-5751] (#2564)) AppLockSource.Manual } else { AppLockSource.TeamEnforced diff --git a/app/src/main/kotlin/com/wire/android/ui/home/settings/SettingsScreen.kt b/app/src/main/kotlin/com/wire/android/ui/home/settings/SettingsScreen.kt index 4e05ce38e2d..df22b67ccf4 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/settings/SettingsScreen.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/settings/SettingsScreen.kt @@ -116,12 +116,11 @@ fun SettingsScreenContent( } add(SettingsItem.NetworkSettings) + appLogger.d("AppLockConfig " + + "isAppLockEditable: ${settingsState.isAppLockEditable} isAppLockEnabled: ${settingsState.isAppLockEnabled}") add(SettingsItem.AppLock( when (settingsState.isAppLockEditable) { true -> { - appLogger.d("AppLockConfig isAooLockEditable: ${settingsState.isAppLockEditable}") - - appLogger.d("AppLockConfig isAppLockEnabled: ${settingsState.isAppLockEnabled}") SwitchState.Enabled( value = settingsState.isAppLockEnabled, isOnOffVisible = true, @@ -130,12 +129,8 @@ fun SettingsScreenContent( } false -> { - appLogger.d("AppLockConfig isAooLockEditable: ${settingsState.isAppLockEditable}") - - appLogger.d("AppLockConfig isAppLockEnabled: ${settingsState.isAppLockEnabled}") - SwitchState.Disabled( + SwitchState.TextOnly( value = settingsState.isAppLockEnabled, - isOnOffVisible = true, ) } } diff --git a/app/src/main/kotlin/com/wire/android/ui/home/settings/SettingsViewModel.kt b/app/src/main/kotlin/com/wire/android/ui/home/settings/SettingsViewModel.kt index fc0945cad29..b77ccb587b2 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/settings/SettingsViewModel.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/settings/SettingsViewModel.kt @@ -26,27 +26,32 @@ import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.wire.android.datastore.GlobalDataStore -import com.wire.kalium.logic.feature.featureConfig.IsAppLockEditableUseCase +import com.wire.kalium.logic.feature.featureConfig.ObserveIsAppLockEditableUseCase import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.combine import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel class SettingsViewModel @Inject constructor( private val globalDataStore: GlobalDataStore, - private val isAppLockEditableUseCase: IsAppLockEditableUseCase + private val observeIsAppLockEditable: ObserveIsAppLockEditableUseCase ) : ViewModel() { var state by mutableStateOf(SettingsState()) private set init { viewModelScope.launch { - isAppLockEditableUseCase().let { - state = state.copy(isAppLockEditable = it) - } - globalDataStore.isAppLockPasscodeSetFlow().collect { - state = state.copy(isAppLockEnabled = it) - } + combine( + observeIsAppLockEditable(), + globalDataStore.isAppLockPasscodeSetFlow() + ) { + isAppLockEditable, isAppLockEnabled -> + SettingsState( + isAppLockEditable = isAppLockEditable, + isAppLockEnabled = isAppLockEnabled + ) + }.collect { state = it } } } diff --git a/app/src/test/kotlin/com/wire/android/feature/DisableAppLockUseCaseTest.kt b/app/src/test/kotlin/com/wire/android/feature/DisableAppLockUseCaseTest.kt index d5c5492bbf7..ce7e875c71e 100644 --- a/app/src/test/kotlin/com/wire/android/feature/DisableAppLockUseCaseTest.kt +++ b/app/src/test/kotlin/com/wire/android/feature/DisableAppLockUseCaseTest.kt @@ -18,11 +18,12 @@ package com.wire.android.feature import com.wire.android.datastore.GlobalDataStore -import com.wire.kalium.logic.feature.featureConfig.IsAppLockEditableUseCase +import com.wire.kalium.logic.feature.featureConfig.ObserveIsAppLockEditableUseCase import io.mockk.MockKAnnotations import io.mockk.coEvery import io.mockk.coVerify import io.mockk.impl.annotations.MockK +import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test @@ -60,15 +61,15 @@ class DisableAppLockUseCaseTest { lateinit var dataStore: GlobalDataStore @MockK - lateinit var isAppLockEditableUseCase: IsAppLockEditableUseCase + lateinit var observeIsAppLockEditableUseCase: ObserveIsAppLockEditableUseCase private val useCase = DisableAppLockUseCase( dataStore, - isAppLockEditableUseCase + observeIsAppLockEditableUseCase ) fun withAppLockEditable(result: Boolean) = apply { - coEvery { isAppLockEditableUseCase() } returns result + coEvery { observeIsAppLockEditableUseCase() } returns flowOf(result) } fun withClearAppLockPasscode() = apply { diff --git a/app/src/test/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModelTest.kt b/app/src/test/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModelTest.kt index 91899d38129..3495b783205 100644 --- a/app/src/test/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModelTest.kt +++ b/app/src/test/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModelTest.kt @@ -26,7 +26,7 @@ import com.wire.android.feature.ObserveAppLockConfigUseCase import com.wire.kalium.logic.feature.applock.MarkTeamAppLockStatusAsNotifiedUseCase import com.wire.kalium.logic.feature.auth.ValidatePasswordResult import com.wire.kalium.logic.feature.auth.ValidatePasswordUseCase -import com.wire.kalium.logic.feature.featureConfig.IsAppLockEditableUseCase +import com.wire.kalium.logic.feature.featureConfig.ObserveIsAppLockEditableUseCase import io.mockk.MockKAnnotations import io.mockk.coEvery import io.mockk.every @@ -83,10 +83,14 @@ class SetLockScreenViewModelTest { private lateinit var markTeamAppLockStatusAsNotified: MarkTeamAppLockStatusAsNotifiedUseCase @MockK +<<<<<<< HEAD private lateinit var isAppLockEditable: IsAppLockEditableUseCase @MockK private lateinit var isAppLockEditableUseCase: IsAppLockEditableUseCase +======= + private lateinit var observeIsAppLockEditableUseCase: ObserveIsAppLockEditableUseCase +>>>>>>> b69889d3b (fix: applock toggle state when enforced and responding to changes [WPB-5751] (#2564)) init { MockKAnnotations.init(this, relaxUnitFun = true) @@ -94,7 +98,11 @@ class SetLockScreenViewModelTest { coEvery { observeAppLockConfig() } returns flowOf( AppLockConfig.Disabled(ObserveAppLockConfigUseCase.DEFAULT_APP_LOCK_TIMEOUT) ) +<<<<<<< HEAD coEvery { isAppLockEditable() } returns true +======= + coEvery { observeIsAppLockEditableUseCase() } returns flowOf(true) +>>>>>>> b69889d3b (fix: applock toggle state when enforced and responding to changes [WPB-5751] (#2564)) } fun withValidPassword() = apply { @@ -106,7 +114,7 @@ class SetLockScreenViewModelTest { } fun withIsAppLockEditable(result: Boolean) = apply { - coEvery { isAppLockEditableUseCase() } returns result + coEvery { observeIsAppLockEditableUseCase() } returns flowOf(result) } private val viewModel = SetLockScreenViewModel( @@ -114,8 +122,12 @@ class SetLockScreenViewModelTest { globalDataStore, TestDispatcherProvider(), observeAppLockConfig, +<<<<<<< HEAD isAppLockEditable, isAppLockEditableUseCase, +======= + observeIsAppLockEditableUseCase, +>>>>>>> b69889d3b (fix: applock toggle state when enforced and responding to changes [WPB-5751] (#2564)) markTeamAppLockStatusAsNotified ) From faa172f97d8e5831a30bb96c24bd14482ca33b43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Saleniuk?= Date: Thu, 4 Jan 2024 12:53:48 +0100 Subject: [PATCH 2/3] resolved conflicts --- .../home/appLock/set/SetLockScreenViewModel.kt | 9 --------- .../appLock/set/SetLockScreenViewModelTest.kt | 17 +---------------- kalium | 2 +- 3 files changed, 2 insertions(+), 26 deletions(-) diff --git a/app/src/main/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModel.kt b/app/src/main/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModel.kt index b44bf79f842..66c1a55dd47 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModel.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModel.kt @@ -43,12 +43,7 @@ class SetLockScreenViewModel @Inject constructor( private val globalDataStore: GlobalDataStore, private val dispatchers: DispatcherProvider, private val observeAppLockConfig: ObserveAppLockConfigUseCase, -<<<<<<< HEAD - private val isAppLockEditable: IsAppLockEditableUseCase, - private val isAppLockEditableUseCase: IsAppLockEditableUseCase, -======= private val observeIsAppLockEditable: ObserveIsAppLockEditableUseCase, ->>>>>>> b69889d3b (fix: applock toggle state when enforced and responding to changes [WPB-5751] (#2564)) private val markTeamAppLockStatusAsNotified: MarkTeamAppLockStatusAsNotifiedUseCase ) : ViewModel() { @@ -91,11 +86,7 @@ class SetLockScreenViewModel @Inject constructor( viewModelScope.launch { withContext(dispatchers.io()) { with(globalDataStore) { -<<<<<<< HEAD - val source = if (isAppLockEditableUseCase()) { -======= val source = if (state.isEditable) { ->>>>>>> b69889d3b (fix: applock toggle state when enforced and responding to changes [WPB-5751] (#2564)) AppLockSource.Manual } else { AppLockSource.TeamEnforced diff --git a/app/src/test/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModelTest.kt b/app/src/test/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModelTest.kt index 3495b783205..03bd24091dc 100644 --- a/app/src/test/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModelTest.kt +++ b/app/src/test/kotlin/com/wire/android/ui/home/appLock/set/SetLockScreenViewModelTest.kt @@ -83,14 +83,7 @@ class SetLockScreenViewModelTest { private lateinit var markTeamAppLockStatusAsNotified: MarkTeamAppLockStatusAsNotifiedUseCase @MockK -<<<<<<< HEAD - private lateinit var isAppLockEditable: IsAppLockEditableUseCase - - @MockK - private lateinit var isAppLockEditableUseCase: IsAppLockEditableUseCase -======= private lateinit var observeIsAppLockEditableUseCase: ObserveIsAppLockEditableUseCase ->>>>>>> b69889d3b (fix: applock toggle state when enforced and responding to changes [WPB-5751] (#2564)) init { MockKAnnotations.init(this, relaxUnitFun = true) @@ -98,11 +91,8 @@ class SetLockScreenViewModelTest { coEvery { observeAppLockConfig() } returns flowOf( AppLockConfig.Disabled(ObserveAppLockConfigUseCase.DEFAULT_APP_LOCK_TIMEOUT) ) -<<<<<<< HEAD - coEvery { isAppLockEditable() } returns true -======= + coEvery { observeIsAppLockEditableUseCase() } returns flowOf(true) ->>>>>>> b69889d3b (fix: applock toggle state when enforced and responding to changes [WPB-5751] (#2564)) } fun withValidPassword() = apply { @@ -122,12 +112,7 @@ class SetLockScreenViewModelTest { globalDataStore, TestDispatcherProvider(), observeAppLockConfig, -<<<<<<< HEAD - isAppLockEditable, - isAppLockEditableUseCase, -======= observeIsAppLockEditableUseCase, ->>>>>>> b69889d3b (fix: applock toggle state when enforced and responding to changes [WPB-5751] (#2564)) markTeamAppLockStatusAsNotified ) diff --git a/kalium b/kalium index 9b7234ded60..3f1ac13d666 160000 --- a/kalium +++ b/kalium @@ -1 +1 @@ -Subproject commit 9b7234ded60a6d4609f9a6d00cad9db48a017ffb +Subproject commit 3f1ac13d666b166a8476da78a3f6da36c9bc177d From 5f9a72d9d7c7675f1db3f096f5b9b0a9d30d9700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Saleniuk?= Date: Mon, 8 Jan 2024 16:35:34 +0100 Subject: [PATCH 3/3] change kalium ref --- kalium | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kalium b/kalium index 3f1ac13d666..e85f2e54e07 160000 --- a/kalium +++ b/kalium @@ -1 +1 @@ -Subproject commit 3f1ac13d666b166a8476da78a3f6da36c9bc177d +Subproject commit e85f2e54e070e28b90df8d60ace18c8b254bc9f9