Skip to content

Commit 2cb283c

Browse files
PM-39082: Do not show accessibility disclosure at app startup for Fdroid
1 parent 74f7dea commit 2cb283c

3 files changed

Lines changed: 32 additions & 3 deletions

File tree

app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepositoryImpl.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.x8bit.bitwarden.data.platform.repository
22

33
import android.view.autofill.AutofillManager
44
import com.bitwarden.authenticatorbridge.util.generateSecretKey
5+
import com.bitwarden.core.data.manager.BuildInfoManager
56
import com.bitwarden.core.data.manager.dispatcher.DispatcherManager
67
import com.bitwarden.data.manager.flightrecorder.FlightRecorderManager
78
import com.bitwarden.policies.PolicyType
@@ -51,6 +52,7 @@ class SettingsRepositoryImpl(
5152
private val autofillManager: AutofillManager,
5253
private val autofillEnabledManager: AutofillEnabledManager,
5354
private val authDiskSource: AuthDiskSource,
55+
private val buildInfoManager: BuildInfoManager,
5456
private val settingsDiskSource: SettingsDiskSource,
5557
private val vaultSdkSource: VaultSdkSource,
5658
flightRecorderManager: FlightRecorderManager,
@@ -375,11 +377,12 @@ class SettingsRepositoryImpl(
375377
override val hasShownAccessibilityDisclaimerFlow: StateFlow<Boolean>
376378
get() = settingsDiskSource
377379
.hasShownAccessibilityDisclaimerFlow
378-
.map { it ?: false }
380+
.map { buildInfoManager.isFdroid || it ?: false }
379381
.stateIn(
380382
scope = unconfinedScope,
381383
started = SharingStarted.Lazily,
382-
initialValue = settingsDiskSource.hasShownAccessibilityDisclaimer ?: false,
384+
initialValue = buildInfoManager.isFdroid ||
385+
settingsDiskSource.hasShownAccessibilityDisclaimer ?: false,
383386
)
384387

385388
init {

app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/di/PlatformRepositoryModule.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.x8bit.bitwarden.data.platform.repository.di
22

33
import android.view.autofill.AutofillManager
4+
import com.bitwarden.core.data.manager.BuildInfoManager
45
import com.bitwarden.core.data.manager.dispatcher.DispatcherManager
56
import com.bitwarden.data.manager.flightrecorder.FlightRecorderManager
67
import com.bitwarden.data.repository.ServerConfigRepository
@@ -67,6 +68,7 @@ object PlatformRepositoryModule {
6768
autofillManager: AutofillManager,
6869
autofillEnabledManager: AutofillEnabledManager,
6970
authDiskSource: AuthDiskSource,
71+
buildInfoManager: BuildInfoManager,
7072
settingsDiskSource: SettingsDiskSource,
7173
vaultSdkSource: VaultSdkSource,
7274
accessibilityEnabledManager: AccessibilityEnabledManager,
@@ -78,6 +80,7 @@ object PlatformRepositoryModule {
7880
autofillManager = autofillManager,
7981
autofillEnabledManager = autofillEnabledManager,
8082
authDiskSource = authDiskSource,
83+
buildInfoManager = buildInfoManager,
8184
settingsDiskSource = settingsDiskSource,
8285
vaultSdkSource = vaultSdkSource,
8386
accessibilityEnabledManager = accessibilityEnabledManager,

app/src/test/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepositoryTest.kt

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.view.autofill.AutofillManager
44
import app.cash.turbine.test
55
import com.bitwarden.authenticatorbridge.util.generateSecretKey
66
import com.bitwarden.core.EnrollPinResponse
7+
import com.bitwarden.core.data.manager.BuildInfoManager
78
import com.bitwarden.core.data.manager.dispatcher.FakeDispatcherManager
89
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
910
import com.bitwarden.core.data.util.asFailure
@@ -75,6 +76,9 @@ class SettingsRepositoryTest {
7576
} returns mutableActivePolicyFlow
7677
}
7778
private val flightRecorderManager = mockk<FlightRecorderManager>()
79+
private val buildInfoManager: BuildInfoManager = mockk {
80+
every { isFdroid } returns false
81+
}
7882

7983
private val settingsRepository = SettingsRepositoryImpl(
8084
autofillManager = autofillManager,
@@ -86,6 +90,7 @@ class SettingsRepositoryTest {
8690
dispatcherManager = FakeDispatcherManager(),
8791
policyManager = policyManager,
8892
flightRecorderManager = flightRecorderManager,
93+
buildInfoManager = buildInfoManager,
8994
)
9095

9196
@BeforeEach
@@ -1119,8 +1124,9 @@ class SettingsRepositoryTest {
11191124
}
11201125
}
11211126

1127+
@Suppress("MaxLineLength")
11221128
@Test
1123-
fun `hasShownAccessibilityDisclaimerFlow should emit changes from SettingsDiskSource`() =
1129+
fun `hasShownAccessibilityDisclaimerFlow should emit changes from SettingsDiskSource when fdroid is false`() =
11241130
runTest {
11251131
fakeSettingsDiskSource.hasShownAccessibilityDisclaimer = null
11261132
settingsRepository.hasShownAccessibilityDisclaimerFlow.test {
@@ -1134,6 +1140,23 @@ class SettingsRepositoryTest {
11341140
}
11351141
}
11361142

1143+
@Suppress("MaxLineLength")
1144+
@Test
1145+
fun `hasShownAccessibilityDisclaimerFlow should emit changes from SettingsDiskSource when fdroid is true`() =
1146+
runTest {
1147+
every { buildInfoManager.isFdroid } returns true
1148+
fakeSettingsDiskSource.hasShownAccessibilityDisclaimer = null
1149+
settingsRepository.hasShownAccessibilityDisclaimerFlow.test {
1150+
assertTrue(awaitItem())
1151+
1152+
fakeSettingsDiskSource.hasShownAccessibilityDisclaimer = true
1153+
expectNoEvents()
1154+
1155+
fakeSettingsDiskSource.hasShownAccessibilityDisclaimer = false
1156+
expectNoEvents()
1157+
}
1158+
}
1159+
11371160
@Test
11381161
fun `accessibilityDisclaimerHasBeenShown should update SettingsDiskSource`() {
11391162
assertNull(fakeSettingsDiskSource.hasShownAccessibilityDisclaimer)

0 commit comments

Comments
 (0)