mirror of
https://github.com/bitwarden/android.git
synced 2026-06-08 08:06:32 -05:00
Add VaultTimeoutAction handling to SettingsRepository (#521)
This commit is contained in:
committed by
Álison Fernandes
parent
e2c35fc373
commit
6470959085
@@ -1,6 +1,7 @@
|
||||
package com.x8bit.bitwarden.data.platform.repository
|
||||
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
|
||||
/**
|
||||
@@ -16,4 +17,23 @@ interface SettingsRepository {
|
||||
* Stores the given [vaultTimeout] for the given [userId].
|
||||
*/
|
||||
fun storeVaultTimeout(userId: String, vaultTimeout: VaultTimeout)
|
||||
|
||||
/**
|
||||
* Gets updates for the [VaultTimeoutAction] associated with the given [userId].
|
||||
*
|
||||
* Note that in cases where no value has been set, a default will be returned. Use
|
||||
* [isVaultTimeoutActionSet] to see if there is an actual value set.
|
||||
*/
|
||||
fun getVaultTimeoutActionStateFlow(userId: String): StateFlow<VaultTimeoutAction>
|
||||
|
||||
/**
|
||||
* Returns `true` if a [VaultTimeoutAction] is set for the given [userId], and `false`
|
||||
* otherwise.
|
||||
*/
|
||||
fun isVaultTimeoutActionSet(userId: String): Boolean
|
||||
|
||||
/**
|
||||
* Stores the given [VaultTimeoutAction] for the given [userId].
|
||||
*/
|
||||
fun storeVaultTimeoutAction(userId: String, vaultTimeoutAction: VaultTimeoutAction?)
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.x8bit.bitwarden.data.platform.repository
|
||||
import com.x8bit.bitwarden.data.platform.datasource.disk.SettingsDiskSource
|
||||
import com.x8bit.bitwarden.data.platform.manager.dispatcher.DispatcherManager
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.flow.SharingStarted
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
@@ -36,6 +37,34 @@ class SettingsRepositoryImpl(
|
||||
vaultTimeoutInMinutes = vaultTimeout.vaultTimeoutInMinutes,
|
||||
)
|
||||
}
|
||||
|
||||
override fun getVaultTimeoutActionStateFlow(
|
||||
userId: String,
|
||||
): StateFlow<VaultTimeoutAction> =
|
||||
settingsDiskSource
|
||||
.getVaultTimeoutActionFlow(userId = userId)
|
||||
.map { it.orDefault() }
|
||||
.stateIn(
|
||||
scope = unconfinedScope,
|
||||
started = SharingStarted.Eagerly,
|
||||
initialValue = settingsDiskSource
|
||||
.getVaultTimeoutAction(userId = userId)
|
||||
.orDefault(),
|
||||
)
|
||||
|
||||
override fun isVaultTimeoutActionSet(
|
||||
userId: String,
|
||||
): Boolean = settingsDiskSource.getVaultTimeoutAction(userId = userId) != null
|
||||
|
||||
override fun storeVaultTimeoutAction(
|
||||
userId: String,
|
||||
vaultTimeoutAction: VaultTimeoutAction?,
|
||||
) {
|
||||
settingsDiskSource.storeVaultTimeoutAction(
|
||||
userId = userId,
|
||||
vaultTimeoutAction = vaultTimeoutAction,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -53,3 +82,9 @@ private fun Int?.toVaultTimeout(): VaultTimeout =
|
||||
null -> VaultTimeout.Never
|
||||
else -> VaultTimeout.Custom(vaultTimeoutInMinutes = this)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the given [VaultTimeoutAction] or a default value if `null`.
|
||||
*/
|
||||
private fun VaultTimeoutAction?.orDefault(): VaultTimeoutAction =
|
||||
this ?: VaultTimeoutAction.LOCK
|
||||
|
||||
Reference in New Issue
Block a user