mirror of
https://github.com/bitwarden/android.git
synced 2026-05-31 09:37:08 -05:00
BIT-2335: Onboarding flow (data) (#1346)
This commit is contained in:
committed by
Álison Fernandes
parent
74648c17bc
commit
1e4e92a43b
@@ -723,6 +723,7 @@ class AuthRepositoryImpl(
|
||||
}
|
||||
|
||||
is RegisterResponseJson.Success -> {
|
||||
settingsRepository.hasUserLoggedInOrCreatedAccount = true
|
||||
RegisterResult.Success(captchaToken = it.captchaBypassToken)
|
||||
}
|
||||
|
||||
@@ -1280,6 +1281,7 @@ class AuthRepositoryImpl(
|
||||
refreshToken = loginResponse.refreshToken,
|
||||
),
|
||||
)
|
||||
settingsRepository.hasUserLoggedInOrCreatedAccount = true
|
||||
authDiskSource.userState = userStateJson
|
||||
loginResponse.key?.let {
|
||||
// Only set the value if it's present, since we may have set it already
|
||||
|
||||
@@ -58,6 +58,16 @@ interface SettingsDiskSource {
|
||||
*/
|
||||
val isCrashLoggingEnabledFlow: Flow<Boolean?>
|
||||
|
||||
/**
|
||||
* The current status if a user has logged in or created an account.
|
||||
*/
|
||||
var hasUserLoggedInOrCreatedAccount: Boolean?
|
||||
|
||||
/**
|
||||
* Emits updates that track [hasUserLoggedInOrCreatedAccount].
|
||||
*/
|
||||
val hasUserLoggedInOrCreatedAccountFlow: Flow<Boolean?>
|
||||
|
||||
/**
|
||||
* Clears all the settings data for the given user.
|
||||
*/
|
||||
|
||||
@@ -32,6 +32,7 @@ private const val ACCOUNT_BIOMETRIC_INTEGRITY_VALID_KEY = "accountBiometricInteg
|
||||
private const val CRASH_LOGGING_ENABLED_KEY = "crashLoggingEnabled"
|
||||
private const val CLEAR_CLIPBOARD_INTERVAL_KEY = "clearClipboard"
|
||||
private const val INITIAL_AUTOFILL_DIALOG_SHOWN = "addSitePromptShown"
|
||||
private const val HAS_USER_LOGGED_IN_OR_CREATED_AN_ACCOUNT_KEY = "hasUserLoggedInOrCreatedAccount"
|
||||
|
||||
/**
|
||||
* Primary implementation of [SettingsDiskSource].
|
||||
@@ -59,6 +60,8 @@ class SettingsDiskSourceImpl(
|
||||
|
||||
private val mutableIsCrashLoggingEnabledFlow = bufferedMutableSharedFlow<Boolean?>()
|
||||
|
||||
private val mutableHasUserLoggedInOrCreatedAccountFlow = bufferedMutableSharedFlow<Boolean?>()
|
||||
|
||||
private val mutableScreenCaptureAllowedFlowMap =
|
||||
mutableMapOf<String, MutableSharedFlow<Boolean?>>()
|
||||
|
||||
@@ -129,6 +132,17 @@ class SettingsDiskSourceImpl(
|
||||
get() = mutableIsCrashLoggingEnabledFlow
|
||||
.onSubscription { emit(getBoolean(CRASH_LOGGING_ENABLED_KEY)) }
|
||||
|
||||
override var hasUserLoggedInOrCreatedAccount: Boolean?
|
||||
get() = getBoolean(key = HAS_USER_LOGGED_IN_OR_CREATED_AN_ACCOUNT_KEY)
|
||||
set(value) {
|
||||
putBoolean(key = HAS_USER_LOGGED_IN_OR_CREATED_AN_ACCOUNT_KEY, value = value)
|
||||
mutableHasUserLoggedInOrCreatedAccountFlow.tryEmit(value)
|
||||
}
|
||||
|
||||
override val hasUserLoggedInOrCreatedAccountFlow: Flow<Boolean?>
|
||||
get() = mutableHasUserLoggedInOrCreatedAccountFlow
|
||||
.onSubscription { emit(getBoolean(HAS_USER_LOGGED_IN_OR_CREATED_AN_ACCOUNT_KEY)) }
|
||||
|
||||
override fun clearData(userId: String) {
|
||||
storeVaultTimeoutInMinutes(userId = userId, vaultTimeoutInMinutes = null)
|
||||
storeVaultTimeoutAction(userId = userId, vaultTimeoutAction = null)
|
||||
|
||||
@@ -72,6 +72,16 @@ interface SettingsRepository {
|
||||
*/
|
||||
val isCrashLoggingEnabledFlow: Flow<Boolean>
|
||||
|
||||
/**
|
||||
* The current status if a user has logged in or created an account.
|
||||
*/
|
||||
var hasUserLoggedInOrCreatedAccount: Boolean
|
||||
|
||||
/**
|
||||
* Emits updates that track the [hasUserLoggedInOrCreatedAccount] value.
|
||||
*/
|
||||
val hasUserLoggedInOrCreatedAccountFlow: Flow<Boolean>
|
||||
|
||||
/**
|
||||
* The [VaultTimeout] for the current user.
|
||||
*/
|
||||
|
||||
@@ -145,6 +145,22 @@ class SettingsRepositoryImpl(
|
||||
initialValue = isCrashLoggingEnabled,
|
||||
)
|
||||
|
||||
override var hasUserLoggedInOrCreatedAccount: Boolean
|
||||
get() = settingsDiskSource.hasUserLoggedInOrCreatedAccount ?: false
|
||||
set(value) {
|
||||
settingsDiskSource.hasUserLoggedInOrCreatedAccount = value
|
||||
}
|
||||
|
||||
override val hasUserLoggedInOrCreatedAccountFlow: Flow<Boolean>
|
||||
get() = settingsDiskSource
|
||||
.hasUserLoggedInOrCreatedAccountFlow
|
||||
.map { it ?: hasUserLoggedInOrCreatedAccount }
|
||||
.stateIn(
|
||||
scope = unconfinedScope,
|
||||
started = SharingStarted.Eagerly,
|
||||
initialValue = hasUserLoggedInOrCreatedAccount,
|
||||
)
|
||||
|
||||
override var vaultTimeout: VaultTimeout
|
||||
get() = activeUserId
|
||||
?.let {
|
||||
|
||||
Reference in New Issue
Block a user