@@ -6,6 +6,7 @@ import androidx.lifecycle.SavedStateHandle
66import androidx.lifecycle.viewModelScope
77import com.bitwarden.ui.platform.base.BaseViewModel
88import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
9+ import com.bitwarden.ui.platform.resource.BitwardenString
910import com.bitwarden.ui.util.Text
1011import com.bitwarden.ui.util.asText
1112import com.bitwarden.vault.CipherView
@@ -22,13 +23,12 @@ import com.x8bit.bitwarden.data.credentials.manager.BitwardenCredentialManager
2223import com.x8bit.bitwarden.data.credentials.util.getCreateCredentialRequestOrNull
2324import com.x8bit.bitwarden.data.credentials.util.getFido2AssertionRequestOrNull
2425import com.x8bit.bitwarden.data.credentials.util.getGetCredentialsRequestOrNull
26+ import com.x8bit.bitwarden.data.credentials.util.getProviderGetPasswordRequestOrNull
2527import com.x8bit.bitwarden.data.platform.manager.AppResumeManager
26- import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager
2728import com.x8bit.bitwarden.data.platform.manager.SpecialCircumstanceManager
2829import com.x8bit.bitwarden.data.platform.manager.garbage.GarbageCollectionManager
2930import com.x8bit.bitwarden.data.platform.manager.model.AppResumeScreenData
3031import com.x8bit.bitwarden.data.platform.manager.model.CompleteRegistrationData
31- import com.x8bit.bitwarden.data.platform.manager.model.FlagKey
3232import com.x8bit.bitwarden.data.platform.manager.model.SpecialCircumstance
3333import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository
3434import com.x8bit.bitwarden.data.platform.repository.SettingsRepository
@@ -68,7 +68,6 @@ private const val ANIMATION_REFRESH_DELAY = 500L
6868class MainViewModel @Inject constructor(
6969 accessibilitySelectionManager : AccessibilitySelectionManager ,
7070 autofillSelectionManager : AutofillSelectionManager ,
71- featureFlagManager : FeatureFlagManager ,
7271 private val addTotpItemFromAuthenticatorManager : AddTotpItemFromAuthenticatorManager ,
7372 private val specialCircumstanceManager : SpecialCircumstanceManager ,
7473 private val garbageCollectionManager : GarbageCollectionManager ,
@@ -85,9 +84,6 @@ class MainViewModel @Inject constructor(
8584 initialState = MainState (
8685 theme = settingsRepository.appTheme,
8786 isScreenCaptureAllowed = settingsRepository.isScreenCaptureAllowed,
88- isErrorReportingDialogEnabled = featureFlagManager.getFeatureFlag(
89- key = FlagKey .MobileErrorReporting ,
90- ),
9187 isDynamicColorsEnabled = settingsRepository.isDynamicColorsEnabled,
9288 ),
9389) {
@@ -106,12 +102,6 @@ class MainViewModel @Inject constructor(
106102 .onEach { specialCircumstance = it }
107103 .launchIn(viewModelScope)
108104
109- featureFlagManager
110- .getFeatureFlagFlow(key = FlagKey .MobileErrorReporting )
111- .map { MainAction .Internal .OnMobileErrorReportingReceive (it) }
112- .onEach(::sendAction)
113- .launchIn(viewModelScope)
114-
115105 accessibilitySelectionManager
116106 .accessibilitySelectionFlow
117107 .map { MainAction .Internal .AccessibilitySelectionReceive (it) }
@@ -217,17 +207,6 @@ class MainViewModel @Inject constructor(
217207 is MainAction .Internal .ThemeUpdate -> handleAppThemeUpdated(action)
218208 is MainAction .Internal .VaultUnlockStateChange -> handleVaultUnlockStateChange()
219209 is MainAction .Internal .DynamicColorsUpdate -> handleDynamicColorsUpdate(action)
220- is MainAction .Internal .OnMobileErrorReportingReceive -> {
221- handleOnMobileErrorReportingReceive(action)
222- }
223- }
224- }
225-
226- private fun handleOnMobileErrorReportingReceive (
227- action : MainAction .Internal .OnMobileErrorReportingReceive ,
228- ) {
229- mutableStateFlow.update {
230- it.copy(isErrorReportingDialogEnabled = action.isErrorReportingEnabled)
231210 }
232211 }
233212
@@ -325,6 +304,7 @@ class MainViewModel @Inject constructor(
325304 val createCredentialRequest = intent.getCreateCredentialRequestOrNull()
326305 val getCredentialsRequest = intent.getGetCredentialsRequestOrNull()
327306 val fido2AssertCredentialRequest = intent.getFido2AssertionRequestOrNull()
307+ val providerGetPasswordRequest = intent.getProviderGetPasswordRequestOrNull()
328308 when {
329309 passwordlessRequestData != null -> {
330310 authRepository.activeUserId?.let {
@@ -415,6 +395,19 @@ class MainViewModel @Inject constructor(
415395 )
416396 }
417397
398+ providerGetPasswordRequest != null -> {
399+ // Set the user's verification status when a new GetPassword request is
400+ // received to force explicit verification if the user's vault is
401+ // unlocked when the request is received.
402+ bitwardenCredentialManager.isUserVerified =
403+ providerGetPasswordRequest.isUserPreVerified
404+
405+ specialCircumstanceManager.specialCircumstance =
406+ SpecialCircumstance .ProviderGetPasswordRequest (
407+ passwordGetRequest = providerGetPasswordRequest,
408+ )
409+ }
410+
418411 getCredentialsRequest != null -> {
419412 specialCircumstanceManager.specialCircumstance =
420413 SpecialCircumstance .ProviderGetCredentials (
@@ -460,7 +453,8 @@ class MainViewModel @Inject constructor(
460453 message = emailTokenResult
461454 .message
462455 ?.asText()
463- ? : R .string.there_was_an_issue_validating_the_registration_token
456+ ? : BitwardenString
457+ .there_was_an_issue_validating_the_registration_token
464458 .asText(),
465459 ),
466460 )
@@ -495,15 +489,12 @@ data class MainState(
495489 val theme : AppTheme ,
496490 val isScreenCaptureAllowed : Boolean ,
497491 val isDynamicColorsEnabled : Boolean ,
498- private val isErrorReportingDialogEnabled : Boolean ,
499492) : Parcelable {
500493 /* *
501494 * Contains all feature flags that are available to the UI.
502495 */
503496 val featureFlagsState: FeatureFlagsState
504- get() = FeatureFlagsState (
505- isErrorReportingDialogEnabled = isErrorReportingDialogEnabled,
506- )
497+ get() = FeatureFlagsState
507498}
508499
509500/* *
@@ -548,13 +539,6 @@ sealed class MainAction {
548539 val cipherView : CipherView ,
549540 ) : Internal()
550541
551- /* *
552- * Indicates the Mobile Error Reporting feature flag has been updated.
553- */
554- data class OnMobileErrorReportingReceive (
555- val isErrorReportingEnabled : Boolean ,
556- ) : Internal()
557-
558542 /* *
559543 * Indicates the user has manually selected the given [cipherView] for autofill.
560544 */
0 commit comments