Skip to content

Commit 31b3b03

Browse files
[deps]: Update androidxCredentialsProviderEvents to v1.0.0-alpha06 (#6734)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Patrick Honkonen <phonkonen@bitwarden.com>
1 parent 89491bb commit 31b3b03

14 files changed

Lines changed: 70 additions & 209 deletions

File tree

app/src/fdroid/kotlin/com/x8bit/bitwarden/data/platform/manager/GmsManagerImpl.kt

Lines changed: 0 additions & 14 deletions
This file was deleted.

app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/GmsManager.kt

Lines changed: 0 additions & 18 deletions
This file was deleted.

app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/di/PlatformManagerModule.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager
4747
import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManagerImpl
4848
import com.x8bit.bitwarden.data.platform.manager.FirstTimeActionManager
4949
import com.x8bit.bitwarden.data.platform.manager.FirstTimeActionManagerImpl
50-
import com.x8bit.bitwarden.data.platform.manager.GmsManager
51-
import com.x8bit.bitwarden.data.platform.manager.GmsManagerImpl
5250
import com.x8bit.bitwarden.data.platform.manager.LogsManager
5351
import com.x8bit.bitwarden.data.platform.manager.LogsManagerImpl
5452
import com.x8bit.bitwarden.data.platform.manager.PolicyManager
@@ -338,12 +336,6 @@ object PlatformManagerModule {
338336
thirdPartyAutofillEnabledManager = thirdPartyAutofillEnabledManager,
339337
)
340338

341-
@Provides
342-
@Singleton
343-
fun provideGmsManager(
344-
@ApplicationContext context: Context,
345-
): GmsManager = GmsManagerImpl(context = context)
346-
347339
@Provides
348340
@Singleton
349341
fun provideDatabaseSchemeManager(

app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/vault/VaultSettingsViewModel.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package com.x8bit.bitwarden.ui.platform.feature.settings.vault
22

33
import androidx.lifecycle.viewModelScope
4+
import com.bitwarden.core.data.manager.BuildInfoManager
45
import com.bitwarden.core.data.manager.model.FlagKey
56
import com.bitwarden.network.model.PolicyTypeJson
67
import com.bitwarden.ui.platform.base.BackgroundEvent
78
import com.bitwarden.ui.platform.base.BaseViewModel
89
import com.bitwarden.ui.platform.components.snackbar.model.BitwardenSnackbarData
910
import com.bitwarden.ui.platform.manager.snackbar.SnackbarRelayManager
10-
import com.x8bit.bitwarden.data.platform.manager.GmsManager
11-
import com.x8bit.bitwarden.data.platform.manager.MINIMUM_CXP_GMS_VERSION
1211
import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager
1312
import com.x8bit.bitwarden.data.platform.manager.FirstTimeActionManager
1413
import com.x8bit.bitwarden.data.platform.manager.PolicyManager
@@ -28,18 +27,19 @@ import javax.inject.Inject
2827
@HiltViewModel
2928
class VaultSettingsViewModel @Inject constructor(
3029
snackbarRelayManager: SnackbarRelayManager<SnackbarRelay>,
30+
private val buildInfoManager: BuildInfoManager,
3131
private val firstTimeActionManager: FirstTimeActionManager,
3232
private val featureFlagManager: FeatureFlagManager,
33-
private val gmsManager: GmsManager,
3433
private val policyManager: PolicyManager,
3534
) : BaseViewModel<VaultSettingsState, VaultSettingsEvent, VaultSettingsAction>(
3635
initialState = run {
3736
val firstTimeState = firstTimeActionManager.currentOrDefaultUserFirstTimeState
3837
VaultSettingsState(
3938
showImportActionCard = firstTimeState.showImportLoginsCardInSettings,
40-
showImportItemsChevron = featureFlagManager.getFeatureFlag(
41-
key = FlagKey.CredentialExchangeProtocolImport,
42-
) && gmsManager.isVersionAtLeast(MINIMUM_CXP_GMS_VERSION),
39+
showImportItemsChevron = !buildInfoManager.isFdroid &&
40+
featureFlagManager.getFeatureFlag(
41+
key = FlagKey.CredentialExchangeProtocolImport,
42+
),
4343
)
4444
},
4545
) {
@@ -67,8 +67,8 @@ class VaultSettingsViewModel @Inject constructor(
6767
) { isEnabled, policies ->
6868
VaultSettingsAction.Internal.CredentialExchangeAvailabilityChanged(
6969
isEnabled = isEnabled &&
70-
policies.isEmpty() &&
71-
gmsManager.isVersionAtLeast(MINIMUM_CXP_GMS_VERSION),
70+
!buildInfoManager.isFdroid &&
71+
policies.isEmpty(),
7272
)
7373
}
7474
.onEach(::sendAction)
@@ -143,9 +143,9 @@ class VaultSettingsViewModel @Inject constructor(
143143
}
144144

145145
private fun handleImportItemsClicked() {
146-
if (featureFlagManager.getFeatureFlag(FlagKey.CredentialExchangeProtocolImport) &&
147-
policyManager.getActivePolicies(PolicyTypeJson.PERSONAL_OWNERSHIP).isEmpty() &&
148-
gmsManager.isVersionAtLeast(MINIMUM_CXP_GMS_VERSION)
146+
if (!buildInfoManager.isFdroid &&
147+
featureFlagManager.getFeatureFlag(FlagKey.CredentialExchangeProtocolImport) &&
148+
policyManager.getActivePolicies(PolicyTypeJson.PERSONAL_OWNERSHIP).isEmpty()
149149
) {
150150
sendEvent(VaultSettingsEvent.NavigateToImportItems)
151151
} else {

app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModel.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.os.Parcelable
44
import androidx.annotation.DrawableRes
55
import androidx.compose.ui.graphics.Color
66
import androidx.lifecycle.viewModelScope
7+
import com.bitwarden.core.data.manager.BuildInfoManager
78
import com.bitwarden.core.data.manager.model.FlagKey
89
import com.bitwarden.core.data.repository.model.DataState
910
import com.bitwarden.core.util.persistentListOfNotNull
@@ -37,8 +38,6 @@ import com.x8bit.bitwarden.data.billing.manager.PremiumStateManager
3738
import com.x8bit.bitwarden.data.platform.manager.CredentialExchangeRegistryManager
3839
import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager
3940
import com.x8bit.bitwarden.data.platform.manager.FirstTimeActionManager
40-
import com.x8bit.bitwarden.data.platform.manager.GmsManager
41-
import com.x8bit.bitwarden.data.platform.manager.MINIMUM_CXP_GMS_VERSION
4241
import com.x8bit.bitwarden.data.platform.manager.PolicyManager
4342
import com.x8bit.bitwarden.data.platform.manager.ReviewPromptManager
4443
import com.x8bit.bitwarden.data.platform.manager.SpecialCircumstanceManager
@@ -117,7 +116,7 @@ class VaultViewModel @Inject constructor(
117116
private val networkConnectionManager: NetworkConnectionManager,
118117
private val browserAutofillDialogManager: BrowserAutofillDialogManager,
119118
private val credentialExchangeRegistryManager: CredentialExchangeRegistryManager,
120-
private val gmsManager: GmsManager,
119+
private val buildInfoManager: BuildInfoManager,
121120
featureFlagManager: FeatureFlagManager,
122121
snackbarRelayManager: SnackbarRelayManager<SnackbarRelay>,
123122
) : BaseViewModel<VaultState, VaultEvent, VaultAction>(
@@ -1028,7 +1027,7 @@ class VaultViewModel @Inject constructor(
10281027
) {
10291028
viewModelScope.launch {
10301029
if (action.isCredentialExchangeProtocolExportEnabled &&
1031-
gmsManager.isVersionAtLeast(MINIMUM_CXP_GMS_VERSION)
1030+
!buildInfoManager.isFdroid
10321031
) {
10331032
credentialExchangeRegistryManager.register()
10341033
} else {

app/src/standard/kotlin/com/x8bit/bitwarden/data/platform/manager/GmsManagerImpl.kt

Lines changed: 0 additions & 15 deletions
This file was deleted.

app/src/test/kotlin/com/x8bit/bitwarden/data/platform/manager/CredentialExchangeRegistryManagerImplTest.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.x8bit.bitwarden.data.platform.manager
22

3+
import androidx.credentials.providerevents.exception.ClearExportUnknownErrorException
34
import androidx.credentials.providerevents.exception.RegisterExportUnknownErrorException
5+
import androidx.credentials.providerevents.transfer.ClearExportResponse
46
import androidx.credentials.providerevents.transfer.CredentialTypes
57
import androidx.credentials.providerevents.transfer.RegisterExportResponse
68
import com.bitwarden.core.data.util.asFailure
@@ -28,7 +30,7 @@ class CredentialExchangeRegistryManagerImplTest {
2830

2931
private val credentialExchangeRegistry: CredentialExchangeRegistry = mockk {
3032
coEvery { register(any()) } returns RegisterExportResponse().asSuccess()
31-
coEvery { unregister() } returns RegisterExportResponse().asSuccess()
33+
coEvery { unregister() } returns ClearExportResponse(isDeleted = true).asSuccess()
3234
}
3335
private val settingsDiskSource: SettingsDiskSource = mockk {
3436
every { getAppRegisteredForExport() } returns false
@@ -109,7 +111,7 @@ class CredentialExchangeRegistryManagerImplTest {
109111
fun `unregister should return Failure when unregistration fails`() = runTest {
110112
coEvery {
111113
credentialExchangeRegistry.unregister()
112-
} returns RegisterExportUnknownErrorException().asFailure()
114+
} returns ClearExportUnknownErrorException().asFailure()
113115

114116
val result = registryManager.unregister()
115117

app/src/test/kotlin/com/x8bit/bitwarden/data/platform/manager/GmsManagerTest.kt

Lines changed: 0 additions & 57 deletions
This file was deleted.

app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/vault/VaultSettingsViewModelTest.kt

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.x8bit.bitwarden.ui.platform.feature.settings.vault
22

33
import app.cash.turbine.test
4+
import com.bitwarden.core.data.manager.BuildInfoManager
45
import com.bitwarden.core.data.manager.model.FlagKey
56
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
67
import com.bitwarden.network.model.PolicyTypeJson
@@ -11,7 +12,6 @@ import com.bitwarden.ui.platform.manager.snackbar.SnackbarRelayManager
1112
import com.bitwarden.ui.util.asText
1213
import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager
1314
import com.x8bit.bitwarden.data.platform.manager.FirstTimeActionManager
14-
import com.x8bit.bitwarden.data.platform.manager.GmsManager
1515
import com.x8bit.bitwarden.data.platform.manager.PolicyManager
1616
import com.x8bit.bitwarden.data.platform.manager.model.FirstTimeState
1717
import com.x8bit.bitwarden.ui.platform.model.SnackbarRelay
@@ -29,6 +29,9 @@ import org.junit.jupiter.api.Assertions.assertTrue
2929
import org.junit.jupiter.api.Test
3030

3131
class VaultSettingsViewModelTest : BaseViewModelTest() {
32+
private val buildInfoManager = mockk<BuildInfoManager> {
33+
every { isFdroid } returns false
34+
}
3235
private val mutableFirstTimeStateFlow = MutableStateFlow(DEFAULT_FIRST_TIME_STATE)
3336
private val firstTimeActionManager = mockk<FirstTimeActionManager> {
3437
every { currentOrDefaultUserFirstTimeState } returns DEFAULT_FIRST_TIME_STATE
@@ -42,9 +45,6 @@ class VaultSettingsViewModelTest : BaseViewModelTest() {
4245
getFeatureFlagFlow(FlagKey.CredentialExchangeProtocolImport)
4346
} returns mutableFeatureFlagFlow
4447
}
45-
private val gmsManager = mockk<GmsManager> {
46-
every { isVersionAtLeast(any()) } returns true
47-
}
4848
private val mutablePoliciesFlow = bufferedMutableSharedFlow<List<SyncResponseJson.Policy>>()
4949
private val policyManager = mockk<PolicyManager> {
5050
every { getActivePolicies(any()) } returns emptyList()
@@ -224,20 +224,35 @@ class VaultSettingsViewModelTest : BaseViewModelTest() {
224224
)
225225
}
226226

227+
@Suppress("MaxLineLength")
227228
@Test
228-
fun `showImportItemsChevron should be false when GMS version is insufficient`() {
229-
every { gmsManager.isVersionAtLeast(any()) } returns false
229+
fun `showImportItemsChevron should be false when feature flag is enabled but policy exists`() {
230230
val viewModel = createViewModel()
231+
mutableFeatureFlagFlow.tryEmit(true)
232+
mutablePoliciesFlow.tryEmit(listOf(mockk()))
231233
assertEquals(
232234
VaultSettingsState(showImportActionCard = true, showImportItemsChevron = false),
233235
viewModel.stateFlow.value,
234236
)
235237
}
236238

237239
@Test
238-
fun `ImportItemsClick should emit NavigateToImportVault when GMS version is insufficient`() =
240+
fun `showImportItemsChevron should be false when isFdroid is true`() {
241+
every { buildInfoManager.isFdroid } returns true
242+
val viewModel = createViewModel()
243+
assertEquals(
244+
VaultSettingsState(
245+
showImportActionCard = true,
246+
showImportItemsChevron = false,
247+
),
248+
viewModel.stateFlow.value,
249+
)
250+
}
251+
252+
@Test
253+
fun `ImportItemsClick should emit NavigateToImportVault when isFdroid is true`() =
239254
runTest {
240-
every { gmsManager.isVersionAtLeast(any()) } returns false
255+
every { buildInfoManager.isFdroid } returns true
241256
val viewModel = createViewModel()
242257
viewModel.eventFlow.test {
243258
viewModel.trySendAction(VaultSettingsAction.ImportItemsClick)
@@ -248,23 +263,11 @@ class VaultSettingsViewModelTest : BaseViewModelTest() {
248263
}
249264
}
250265

251-
@Suppress("MaxLineLength")
252-
@Test
253-
fun `showImportItemsChevron should be false when feature flag and GMS sufficient but policy exists`() {
254-
val viewModel = createViewModel()
255-
mutableFeatureFlagFlow.tryEmit(true)
256-
mutablePoliciesFlow.tryEmit(listOf(mockk()))
257-
assertEquals(
258-
VaultSettingsState(showImportActionCard = true, showImportItemsChevron = false),
259-
viewModel.stateFlow.value,
260-
)
261-
}
262-
263266
private fun createViewModel(): VaultSettingsViewModel = VaultSettingsViewModel(
267+
buildInfoManager = buildInfoManager,
264268
firstTimeActionManager = firstTimeActionManager,
265269
snackbarRelayManager = snackbarRelayManager,
266270
featureFlagManager = featureFlagManager,
267-
gmsManager = gmsManager,
268271
policyManager = policyManager,
269272
)
270273
}

0 commit comments

Comments
 (0)