mirror of
https://github.com/bitwarden/android.git
synced 2026-08-25 17:09:55 -05:00
PM-27263: Add enum for Vault Timeout Policy actions (#6067)
This commit is contained in:
+14
-2
@@ -122,6 +122,18 @@ sealed class PolicyInformation {
|
||||
val minutes: Int?,
|
||||
|
||||
@SerialName("action")
|
||||
val action: String?,
|
||||
) : PolicyInformation()
|
||||
val action: Action?,
|
||||
) : PolicyInformation() {
|
||||
/**
|
||||
* The action to take when the vault timeout is reached.
|
||||
*/
|
||||
@Serializable
|
||||
enum class Action {
|
||||
@SerialName("lock")
|
||||
LOCK,
|
||||
|
||||
@SerialName("logOut")
|
||||
LOGOUT,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-4
@@ -647,10 +647,9 @@ class SettingsRepositoryImpl(
|
||||
}
|
||||
}
|
||||
vaultUnlockPolicy.action?.let {
|
||||
vaultTimeoutAction = if (it == "lock") {
|
||||
VaultTimeoutAction.LOCK
|
||||
} else {
|
||||
VaultTimeoutAction.LOGOUT
|
||||
vaultTimeoutAction = when (it) {
|
||||
PolicyInformation.VaultTimeout.Action.LOCK -> VaultTimeoutAction.LOCK
|
||||
PolicyInformation.VaultTimeout.Action.LOGOUT -> VaultTimeoutAction.LOGOUT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9
-8
@@ -61,6 +61,7 @@ import com.bitwarden.ui.platform.resource.BitwardenString
|
||||
import com.bitwarden.ui.platform.theme.BitwardenTheme
|
||||
import com.bitwarden.ui.util.Text
|
||||
import com.bitwarden.ui.util.asText
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.PolicyInformation
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction
|
||||
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenUnlockWithBiometricsSwitch
|
||||
@@ -473,25 +474,25 @@ private fun AccountSecurityDialogs(
|
||||
@Composable
|
||||
private fun SessionTimeoutPolicyRow(
|
||||
vaultTimeoutPolicyMinutes: Int?,
|
||||
vaultTimeoutPolicyAction: String?,
|
||||
vaultTimeoutPolicyAction: PolicyInformation.VaultTimeout.Action?,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
// Show the policy warning if applicable.
|
||||
if (vaultTimeoutPolicyMinutes != null || !vaultTimeoutPolicyAction.isNullOrBlank()) {
|
||||
if (vaultTimeoutPolicyMinutes != null || vaultTimeoutPolicyAction != null) {
|
||||
// Calculate the hours and minutes to show in the policy label.
|
||||
val hours = vaultTimeoutPolicyMinutes?.floorDiv(MINUTES_PER_HOUR)
|
||||
val minutes = vaultTimeoutPolicyMinutes?.mod(MINUTES_PER_HOUR)
|
||||
|
||||
// Get the localized version of the action.
|
||||
val action = if (vaultTimeoutPolicyAction == "lock") {
|
||||
BitwardenString.lock.asText()
|
||||
} else {
|
||||
BitwardenString.log_out.asText()
|
||||
val action = when (vaultTimeoutPolicyAction) {
|
||||
PolicyInformation.VaultTimeout.Action.LOCK -> BitwardenString.lock.asText()
|
||||
PolicyInformation.VaultTimeout.Action.LOGOUT -> BitwardenString.log_out.asText()
|
||||
null -> BitwardenString.log_out.asText()
|
||||
}
|
||||
|
||||
val policyText = if (hours == null || minutes == null) {
|
||||
BitwardenString.vault_timeout_action_policy_in_effect.asText(action)
|
||||
} else if (vaultTimeoutPolicyAction.isNullOrBlank()) {
|
||||
} else if (vaultTimeoutPolicyAction == null) {
|
||||
BitwardenString.vault_timeout_policy_in_effect.asText(hours, minutes)
|
||||
} else {
|
||||
BitwardenString.vault_timeout_policy_with_action_in_effect.asText(
|
||||
@@ -629,7 +630,7 @@ private fun SessionCustomTimeoutRow(
|
||||
@Composable
|
||||
private fun SessionTimeoutActionRow(
|
||||
isEnabled: Boolean,
|
||||
vaultTimeoutPolicyAction: String?,
|
||||
vaultTimeoutPolicyAction: PolicyInformation.VaultTimeout.Action?,
|
||||
selectedVaultTimeoutAction: VaultTimeoutAction,
|
||||
onVaultTimeoutActionSelect: (VaultTimeoutAction) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
|
||||
+1
-1
@@ -519,7 +519,7 @@ data class AccountSecurityState(
|
||||
val vaultTimeout: VaultTimeout,
|
||||
val vaultTimeoutAction: VaultTimeoutAction,
|
||||
val vaultTimeoutPolicyMinutes: Int?,
|
||||
val vaultTimeoutPolicyAction: String?,
|
||||
val vaultTimeoutPolicyAction: PolicyInformation.VaultTimeout.Action?,
|
||||
val shouldShowUnlockActionCard: Boolean,
|
||||
val removeUnlockWithPinPolicyEnabled: Boolean,
|
||||
) : Parcelable {
|
||||
|
||||
+1
-1
@@ -118,7 +118,7 @@ class SyncResponseJsonExtensionsTest {
|
||||
fun `policyInformation converts the VaultTimeout Json data to policy information`() {
|
||||
val policyInformation = PolicyInformation.VaultTimeout(
|
||||
minutes = 10,
|
||||
action = "lock",
|
||||
action = PolicyInformation.VaultTimeout.Action.LOCK,
|
||||
)
|
||||
val policy = createMockPolicy(
|
||||
type = PolicyTypeJson.MAXIMUM_VAULT_TIMEOUT,
|
||||
|
||||
+2
-1
@@ -23,6 +23,7 @@ import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||
import com.bitwarden.ui.platform.manager.IntentManager
|
||||
import com.bitwarden.ui.util.asText
|
||||
import com.bitwarden.ui.util.assertNoDialogExists
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.PolicyInformation
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout
|
||||
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction
|
||||
import com.x8bit.bitwarden.ui.platform.base.BitwardenComposeTest
|
||||
@@ -602,7 +603,7 @@ class AccountSecurityScreenTest : BitwardenComposeTest() {
|
||||
mutableStateFlow.update {
|
||||
it.copy(
|
||||
vaultTimeoutPolicyMinutes = 100,
|
||||
vaultTimeoutPolicyAction = "lock",
|
||||
vaultTimeoutPolicyAction = PolicyInformation.VaultTimeout.Action.LOCK,
|
||||
)
|
||||
}
|
||||
val bothText = "Your organization policies are affecting your vault timeout. " +
|
||||
|
||||
+2
-2
@@ -143,7 +143,7 @@ class AccountSecurityViewModelTest : BaseViewModelTest() {
|
||||
|
||||
val policyInformation = PolicyInformation.VaultTimeout(
|
||||
minutes = 10,
|
||||
action = "lock",
|
||||
action = PolicyInformation.VaultTimeout.Action.LOCK,
|
||||
)
|
||||
mutableActivePolicyFlow.emit(
|
||||
listOf(
|
||||
@@ -159,7 +159,7 @@ class AccountSecurityViewModelTest : BaseViewModelTest() {
|
||||
assertEquals(
|
||||
DEFAULT_STATE.copy(
|
||||
vaultTimeoutPolicyMinutes = 10,
|
||||
vaultTimeoutPolicyAction = "lock",
|
||||
vaultTimeoutPolicyAction = PolicyInformation.VaultTimeout.Action.LOCK,
|
||||
),
|
||||
awaitItem(),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user