mirror of
https://github.com/bitwarden/android.git
synced 2026-06-07 23:58:03 -05:00
Set Settings defaults on login and clear them on logout (#537)
This commit is contained in:
committed by
Álison Fernandes
parent
e863559c12
commit
acb5fce448
@@ -33,6 +33,7 @@ import com.x8bit.bitwarden.data.auth.util.KdfParamsConstants.DEFAULT_PBKDF2_ITER
|
||||
import com.x8bit.bitwarden.data.auth.util.toSdkParams
|
||||
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
|
||||
import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository
|
||||
import com.x8bit.bitwarden.data.platform.repository.SettingsRepository
|
||||
import com.x8bit.bitwarden.data.platform.repository.util.bufferedMutableSharedFlow
|
||||
import com.x8bit.bitwarden.data.platform.util.asFailure
|
||||
import com.x8bit.bitwarden.data.platform.util.flatMap
|
||||
@@ -62,6 +63,7 @@ class AuthRepositoryImpl constructor(
|
||||
private val authSdkSource: AuthSdkSource,
|
||||
private val authDiskSource: AuthDiskSource,
|
||||
private val environmentRepository: EnvironmentRepository,
|
||||
private val settingsRepository: SettingsRepository,
|
||||
private val vaultRepository: VaultRepository,
|
||||
dispatcherManager: DispatcherManager,
|
||||
) : AuthRepository {
|
||||
@@ -210,6 +212,9 @@ class AuthRepositoryImpl constructor(
|
||||
userId = userStateJson.activeUserId,
|
||||
privateKey = loginResponse.privateKey,
|
||||
)
|
||||
settingsRepository.setDefaultsIfNecessary(
|
||||
userId = userStateJson.activeUserId,
|
||||
)
|
||||
vaultRepository.sync()
|
||||
specialCircumstance = null
|
||||
LoginResult.Success
|
||||
@@ -275,6 +280,9 @@ class AuthRepositoryImpl constructor(
|
||||
authDiskSource.userState = null
|
||||
}
|
||||
|
||||
// Clear settings
|
||||
settingsRepository.clearData(userId)
|
||||
|
||||
// Delete all the vault data
|
||||
vaultRepository.deleteVaultData(userId)
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.x8bit.bitwarden.data.auth.repository.AuthRepository
|
||||
import com.x8bit.bitwarden.data.auth.repository.AuthRepositoryImpl
|
||||
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
|
||||
import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository
|
||||
import com.x8bit.bitwarden.data.platform.repository.SettingsRepository
|
||||
import com.x8bit.bitwarden.data.vault.repository.VaultRepository
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
@@ -33,6 +34,7 @@ object AuthRepositoryModule {
|
||||
authDiskSource: AuthDiskSource,
|
||||
dispatchers: DispatcherManager,
|
||||
environmentRepository: EnvironmentRepository,
|
||||
settingsRepository: SettingsRepository,
|
||||
vaultRepository: VaultRepository,
|
||||
): AuthRepository = AuthRepositoryImpl(
|
||||
accountsService = accountsService,
|
||||
@@ -42,6 +44,7 @@ object AuthRepositoryModule {
|
||||
haveIBeenPwnedService = haveIBeenPwnedService,
|
||||
dispatcherManager = dispatchers,
|
||||
environmentRepository = environmentRepository,
|
||||
settingsRepository = settingsRepository,
|
||||
vaultRepository = vaultRepository,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -18,6 +18,17 @@ interface SettingsRepository {
|
||||
*/
|
||||
var vaultTimeoutAction: VaultTimeoutAction
|
||||
|
||||
/**
|
||||
* Clears all the settings data for the given user.
|
||||
*/
|
||||
fun clearData(userId: String)
|
||||
|
||||
/**
|
||||
* Sets default values for various settings for the given [userId] if necessary. This is
|
||||
* typically used when logging into a new account.
|
||||
*/
|
||||
fun setDefaultsIfNecessary(userId: String)
|
||||
|
||||
/**
|
||||
* Gets updates for the [VaultTimeout] associated with the given [userId].
|
||||
*/
|
||||
|
||||
@@ -51,6 +51,27 @@ class SettingsRepositoryImpl(
|
||||
)
|
||||
}
|
||||
|
||||
override fun clearData(userId: String) {
|
||||
settingsDiskSource.apply {
|
||||
storeVaultTimeoutInMinutes(
|
||||
userId = userId,
|
||||
vaultTimeoutInMinutes = null,
|
||||
)
|
||||
storeVaultTimeoutAction(
|
||||
userId = userId,
|
||||
vaultTimeoutAction = null,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setDefaultsIfNecessary(userId: String) {
|
||||
// Set Vault Settings defaults
|
||||
if (!isVaultTimeoutActionSet(userId = userId)) {
|
||||
storeVaultTimeout(userId, VaultTimeout.ThirtyMinutes)
|
||||
storeVaultTimeoutAction(userId, VaultTimeoutAction.LOCK)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getVaultTimeoutStateFlow(userId: String): StateFlow<VaultTimeout> =
|
||||
settingsDiskSource
|
||||
.getVaultTimeoutInMinutesFlow(userId = userId)
|
||||
|
||||
Reference in New Issue
Block a user