diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt index 4273e2a969..341694b4e1 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt @@ -29,7 +29,6 @@ fun FlagKey.ListItemContent( FlagKey.CredentialExchangeProtocolImport, FlagKey.CredentialExchangeProtocolExport, FlagKey.CipherKeyEncryption, - FlagKey.RestrictCipherItemDeletion, FlagKey.UserManagedPrivilegedApps, FlagKey.RemoveCardPolicy, -> { @@ -76,7 +75,6 @@ private fun FlagKey.getDisplayLabel(): String = when (this) { FlagKey.CredentialExchangeProtocolImport -> stringResource(BitwardenString.cxp_import) FlagKey.CredentialExchangeProtocolExport -> stringResource(BitwardenString.cxp_export) FlagKey.CipherKeyEncryption -> stringResource(BitwardenString.cipher_key_encryption) - FlagKey.RestrictCipherItemDeletion -> stringResource(BitwardenString.restrict_item_deletion) FlagKey.UserManagedPrivilegedApps -> { stringResource(BitwardenString.user_trusted_privileged_app_management) } diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt index 3149d4909d..d5f22aea88 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt @@ -7,7 +7,6 @@ import androidx.credentials.provider.ProviderCreateCredentialRequest import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope import com.bitwarden.core.DateTime -import com.bitwarden.core.data.manager.model.FlagKey import com.bitwarden.core.data.repository.model.DataState import com.bitwarden.core.data.repository.util.takeUntilLoaded import com.bitwarden.network.model.PolicyTypeJson @@ -30,7 +29,6 @@ import com.x8bit.bitwarden.data.credentials.model.CreateCredentialRequest import com.x8bit.bitwarden.data.credentials.model.Fido2RegisterCredentialResult import com.x8bit.bitwarden.data.credentials.model.UserVerificationRequirement import com.x8bit.bitwarden.data.credentials.util.getCreatePasskeyCredentialRequestOrNull -import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager import com.x8bit.bitwarden.data.platform.manager.FirstTimeActionManager import com.x8bit.bitwarden.data.platform.manager.PolicyManager import com.x8bit.bitwarden.data.platform.manager.SpecialCircumstanceManager @@ -128,7 +126,6 @@ class VaultAddEditViewModel @Inject constructor( private val organizationEventManager: OrganizationEventManager, private val networkConnectionManager: NetworkConnectionManager, private val firstTimeActionManager: FirstTimeActionManager, - private val featureFlagManager: FeatureFlagManager, ) : BaseViewModel( // We load the state from the savedStateHandle for testing purposes. initialState = savedStateHandle[KEY_STATE] @@ -1784,10 +1781,6 @@ class VaultAddEditViewModel @Inject constructor( vaultData: VaultData?, userData: UserState?, ): VaultAddEditState { - val restrictCipherItemDeletionEnabled = featureFlagManager - .getFeatureFlag( - FlagKey.RestrictCipherItemDeletion, - ) val internalVaultData = vaultData ?: VaultData( decryptCipherListResult = DecryptCipherListResult( @@ -1826,9 +1819,7 @@ class VaultAddEditViewModel @Inject constructor( currentAccount = userData?.activeAccount, vaultAddEditType = vaultAddEditType, ) { currentAccount, cipherView -> - val canDelete = if (restrictCipherItemDeletionEnabled && - cipherView?.permissions?.delete != null - ) { + val canDelete = if (cipherView?.permissions?.delete != null) { cipherView.permissions?.delete == true } else { val needsManagePermission = cipherView diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt index f81548b7d6..cd21e669bc 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt @@ -4,7 +4,6 @@ import android.net.Uri import android.os.Parcelable import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope -import com.bitwarden.core.data.manager.model.FlagKey import com.bitwarden.core.data.repository.model.DataState import com.bitwarden.core.data.repository.util.combineDataStates import com.bitwarden.core.data.repository.util.mapNullable @@ -21,7 +20,6 @@ import com.bitwarden.vault.CipherView import com.x8bit.bitwarden.data.auth.repository.AuthRepository import com.x8bit.bitwarden.data.auth.repository.model.BreachCountResult import com.x8bit.bitwarden.data.auth.repository.model.UserState -import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager import com.x8bit.bitwarden.data.platform.manager.clipboard.BitwardenClipboardManager import com.x8bit.bitwarden.data.platform.manager.event.OrganizationEventManager import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEvent @@ -75,7 +73,6 @@ class VaultItemViewModel @Inject constructor( private val organizationEventManager: OrganizationEventManager, private val environmentRepository: EnvironmentRepository, private val settingsRepository: SettingsRepository, - private val featureFlagManager: FeatureFlagManager, private val snackbarRelayManager: SnackbarRelayManager, ) : BaseViewModel( // We load the state from the savedStateHandle for testing purposes. @@ -112,10 +109,6 @@ class VaultItemViewModel @Inject constructor( vaultRepository.collectionsStateFlow, vaultRepository.foldersStateFlow, ) { cipherViewState, userState, authCodeState, collectionsState, folderState -> - val restrictCipherItemDeletionEnabled = featureFlagManager - .getFeatureFlag( - FlagKey.RestrictCipherItemDeletion, - ) val totpCodeData = authCodeState.data?.let { TotpCodeItemData( periodSeconds = it.periodSeconds, @@ -136,9 +129,7 @@ class VaultItemViewModel @Inject constructor( } .mapNullable { val cipherView = cipherViewState.data - val canDelete = if (restrictCipherItemDeletionEnabled && - cipherView?.permissions?.delete != null - ) { + val canDelete = if (cipherView?.permissions?.delete != null) { cipherView.permissions?.delete == true } else { val needsManagePermission = cipherView @@ -156,9 +147,7 @@ class VaultItemViewModel @Inject constructor( ) } - val canRestore = if (restrictCipherItemDeletionEnabled && - cipherView?.permissions?.restore != null - ) { + val canRestore = if (cipherView?.permissions?.restore != null) { cipherView.permissions?.restore == true && cipherView.deletedDate != null } else { diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/debugmenu/DebugMenuViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/debugmenu/DebugMenuViewModelTest.kt index c2cbaaf9fd..ee437b6d03 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/debugmenu/DebugMenuViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/debugmenu/DebugMenuViewModelTest.kt @@ -146,7 +146,6 @@ class DebugMenuViewModelTest : BaseViewModelTest() { private val DEFAULT_MAP_VALUE: ImmutableMap, Any> = persistentMapOf( FlagKey.CredentialExchangeProtocolImport to true, FlagKey.CredentialExchangeProtocolExport to true, - FlagKey.RestrictCipherItemDeletion to true, FlagKey.UserManagedPrivilegedApps to true, FlagKey.RemoveCardPolicy to true, ) @@ -154,7 +153,6 @@ private val DEFAULT_MAP_VALUE: ImmutableMap, Any> = persistentMapOf private val UPDATED_MAP_VALUE: ImmutableMap, Any> = persistentMapOf( FlagKey.CredentialExchangeProtocolImport to false, FlagKey.CredentialExchangeProtocolExport to false, - FlagKey.RestrictCipherItemDeletion to false, FlagKey.UserManagedPrivilegedApps to false, FlagKey.RemoveCardPolicy to false, ) diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt index c87cfd02c8..343bc4260c 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt @@ -40,7 +40,6 @@ import com.x8bit.bitwarden.data.credentials.model.CreateCredentialRequest import com.x8bit.bitwarden.data.credentials.model.Fido2RegisterCredentialResult import com.x8bit.bitwarden.data.credentials.model.UserVerificationRequirement import com.x8bit.bitwarden.data.credentials.model.createMockCreateCredentialRequest -import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager import com.x8bit.bitwarden.data.platform.manager.FirstTimeActionManager import com.x8bit.bitwarden.data.platform.manager.PolicyManager import com.x8bit.bitwarden.data.platform.manager.SpecialCircumstanceManager @@ -49,7 +48,6 @@ import com.x8bit.bitwarden.data.platform.manager.clipboard.BitwardenClipboardMan import com.x8bit.bitwarden.data.platform.manager.event.OrganizationEventManager import com.x8bit.bitwarden.data.platform.manager.model.CoachMarkTourType import com.x8bit.bitwarden.data.platform.manager.model.FirstTimeState -import com.bitwarden.core.data.manager.model.FlagKey import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEvent import com.x8bit.bitwarden.data.platform.manager.model.SpecialCircumstance import com.x8bit.bitwarden.data.platform.manager.network.NetworkConnectionManager @@ -204,10 +202,6 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { every { markCoachMarkTourCompleted(CoachMarkTourType.ADD_LOGIN) } just runs every { shouldShowAddLoginCoachMarkFlow } returns mutableShouldShowAddLoginCoachMarkFlow } - - private val featureFlagManager: FeatureFlagManager = mockk { - every { getFeatureFlag(key = FlagKey.RestrictCipherItemDeletion) } returns false - } private val mutableSnackbarDataFlow: MutableSharedFlow = bufferedMutableSharedFlow() private val snackbarRelayManager: SnackbarRelayManager = mockk { @@ -1349,89 +1343,6 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { } } - @Test - fun `in edit mode, canDelete should be false when cipher permission is false`() = - runTest { - val cipherListView = createMockCipherListView( - number = 1, - permissions = createMockSdkCipherPermissions( - delete = false, - restore = false, - ), - ) - val cipherView = createMockCipherView(1) - .copy( - permissions = createMockSdkCipherPermissions( - delete = false, - restore = false, - ), - ) - val vaultAddEditType = VaultAddEditType.EditItem(DEFAULT_EDIT_ITEM_ID) - val stateWithName = createVaultAddItemState( - vaultAddEditType = vaultAddEditType, - commonContentViewState = createCommonContentViewState( - name = "mockName-1", - originalCipher = cipherView, - customFieldData = listOf( - VaultAddEditState.Custom.HiddenField( - itemId = "testId", - name = "mockName-1", - value = "mockValue-1", - ), - ), - notes = "mockNotes-1", - canDelete = false, - ), - ) - every { - featureFlagManager.getFeatureFlag(FlagKey.RestrictCipherItemDeletion) - } returns true - - coEvery { - vaultRepository.getCipher("mockId-1") - } returns GetCipherResult.Success(cipherView) - every { - cipherView.toViewState( - isClone = false, - isIndividualVaultDisabled = false, - totpData = null, - resourceManager = resourceManager, - clock = fixedClock, - canDelete = false, - canAssignToCollections = true, - ) - } returns stateWithName.viewState - - mutableVaultDataFlow.value = DataState.Loaded( - data = createVaultData( - cipherListView = cipherListView, - collectionViewList = listOf( - createEditCollectionView(number = 1), - ), - ), - ) - - createAddVaultItemViewModel( - createSavedStateHandleWithState( - state = stateWithName, - vaultAddEditType = vaultAddEditType, - vaultItemCipherType = VaultItemCipherType.LOGIN, - ), - ) - - verify { - cipherView.toViewState( - isClone = false, - isIndividualVaultDisabled = false, - totpData = null, - resourceManager = resourceManager, - clock = fixedClock, - canDelete = false, - canAssignToCollections = true, - ) - } - } - @Test fun `in edit mode, canDelete should be true when cipher permission is true`() = runTest { @@ -1463,9 +1374,6 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { canDelete = true, ), ) - every { - featureFlagManager.getFeatureFlag(FlagKey.RestrictCipherItemDeletion) - } returns true coEvery { vaultRepository.getCipher("mockId-1") @@ -1512,92 +1420,6 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { } } - @Suppress("MaxLineLength") - @Test - fun `in edit mode, canDelete should be false when cipher is in a collection the user cannot manage and org has limitItemDeletion`() = - runTest { - val userState = createUserState().copy( - accounts = listOf( - createUserState().accounts.first().copy( - organizations = listOf( - Organization( - id = "mockOrganizationId-1", - name = "Mock Organization Name 1", - shouldManageResetPassword = false, - shouldUseKeyConnector = false, - role = OrganizationType.ADMIN, - keyConnectorUrl = null, - userIsClaimedByOrganization = false, - limitItemDeletion = true, - ), - ), - ), - ), - ) - mutableUserStateFlow.value = userState - - val cipherListView = createMockCipherListView(number = 1) - val cipherView = createMockCipherView(1) - val vaultAddEditType = VaultAddEditType.EditItem(DEFAULT_EDIT_ITEM_ID) - val stateWithName = createVaultAddItemState( - vaultAddEditType = vaultAddEditType, - commonContentViewState = createCommonContentViewState( - name = "mockName-1", - originalCipher = cipherView, - customFieldData = listOf( - VaultAddEditState.Custom.HiddenField( - itemId = "testId", - name = "mockName-1", - value = "mockValue-1", - ), - ), - notes = "mockNotes-1", - canDelete = false, - ), - ) - - every { - cipherView.toViewState( - isClone = false, - isIndividualVaultDisabled = false, - totpData = null, - resourceManager = resourceManager, - clock = fixedClock, - canDelete = false, - canAssignToCollections = true, - ) - } returns stateWithName.viewState - - mutableVaultDataFlow.value = DataState.Loaded( - data = createVaultData( - cipherListView = cipherListView, - collectionViewList = listOf( - createEditCollectionView(number = 1), - ), - ), - ) - - createAddVaultItemViewModel( - createSavedStateHandleWithState( - state = stateWithName, - vaultAddEditType = vaultAddEditType, - vaultItemCipherType = VaultItemCipherType.LOGIN, - ), - ) - - verify { - cipherView.toViewState( - isClone = false, - isIndividualVaultDisabled = false, - totpData = null, - resourceManager = resourceManager, - clock = fixedClock, - canDelete = false, - canAssignToCollections = true, - ) - } - } - @Suppress("MaxLineLength") @Test fun `in edit mode, canDelete should be true when cipher is in a collection the user can manage`() = @@ -1671,73 +1493,6 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { } } - @Suppress("MaxLineLength") - @Test - fun `in edit mode, canAssociateToCollections should be false when cipher is in a collection with view permission`() = - runTest { - val cipherListView = createMockCipherListView(number = 1) - val cipherView = createMockCipherView(1) - val vaultAddEditType = VaultAddEditType.EditItem(DEFAULT_EDIT_ITEM_ID) - val stateWithName = createVaultAddItemState( - vaultAddEditType = vaultAddEditType, - commonContentViewState = createCommonContentViewState( - name = "mockName-1", - originalCipher = cipherView, - customFieldData = listOf( - VaultAddEditState.Custom.HiddenField( - itemId = "testId", - name = "mockName-1", - value = "mockValue-1", - ), - ), - notes = "mockNotes-1", - canDelete = false, - canAssociateToCollections = false, - ), - ) - - every { - cipherView.toViewState( - isClone = false, - isIndividualVaultDisabled = false, - totpData = null, - resourceManager = resourceManager, - clock = fixedClock, - canDelete = false, - canAssignToCollections = false, - ) - } returns stateWithName.viewState - - mutableVaultDataFlow.value = DataState.Loaded( - data = createVaultData( - cipherListView = cipherListView, - collectionViewList = listOf( - createViewCollectionView(number = 1), - ), - ), - ) - - createAddVaultItemViewModel( - createSavedStateHandleWithState( - state = stateWithName, - vaultAddEditType = vaultAddEditType, - vaultItemCipherType = VaultItemCipherType.LOGIN, - ), - ) - - verify { - cipherView.toViewState( - isClone = false, - isIndividualVaultDisabled = false, - totpData = null, - resourceManager = resourceManager, - clock = fixedClock, - canDelete = false, - canAssignToCollections = false, - ) - } - } - @Suppress("MaxLineLength") @Test fun `in edit mode, canAssociateToCollections should be false when cipher is in a collection with manage permission and a collection with edit, except password permission`() = @@ -3553,7 +3308,6 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { organizationEventManager = organizationEventManager, networkConnectionManager = networkConnectionManager, firstTimeActionManager = firstTimeActionManager, - featureFlagManager = featureFlagManager, ) } @@ -4943,7 +4697,6 @@ class VaultAddEditViewModelTest : BaseViewModelTest() { organizationEventManager = organizationEventManager, networkConnectionManager = networkConnectionManager, firstTimeActionManager = firstTimeActionManager, - featureFlagManager = featureFlagManager, ) private fun createVaultData( diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt index 6a57e71fe8..873a80a3ae 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt @@ -23,11 +23,9 @@ import com.x8bit.bitwarden.data.auth.repository.AuthRepository import com.x8bit.bitwarden.data.auth.repository.model.BreachCountResult import com.x8bit.bitwarden.data.auth.repository.model.Organization import com.x8bit.bitwarden.data.auth.repository.model.UserState -import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager import com.x8bit.bitwarden.data.platform.manager.clipboard.BitwardenClipboardManager import com.x8bit.bitwarden.data.platform.manager.event.OrganizationEventManager import com.x8bit.bitwarden.data.platform.manager.model.FirstTimeState -import com.bitwarden.core.data.manager.model.FlagKey import com.x8bit.bitwarden.data.platform.manager.model.OrganizationEvent import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository import com.x8bit.bitwarden.data.platform.repository.SettingsRepository @@ -119,9 +117,6 @@ class VaultItemViewModelTest : BaseViewModelTest() { every { isIconLoadingDisabled } returns false every { isIconLoadingDisabledFlow } returns mutableIsIconLoadingDisabledFlow } - private val featureFlagManager: FeatureFlagManager = mockk { - every { getFeatureFlag(key = FlagKey.RestrictCipherItemDeletion) } returns false - } private val mutableSnackbarDataFlow: MutableSharedFlow = bufferedMutableSharedFlow() private val snackbarRelayManager: SnackbarRelayManager = mockk { @@ -2154,9 +2149,6 @@ class VaultItemViewModelTest : BaseViewModelTest() { @Suppress("MaxLineLength") fun `on VaultDataReceive with Loaded and nonnull false permission data should update the ViewState with cipher permissions`() { val viewState = mockk() - every { - featureFlagManager.getFeatureFlag(FlagKey.RestrictCipherItemDeletion) - } returns true every { mockCipherView.organizationId } returns "mockOrganizationId" every { mockCipherView.collectionIds } returns listOf("mockId-1") every { mockCipherView.folderId } returns "mockId-1" @@ -2219,9 +2211,6 @@ class VaultItemViewModelTest : BaseViewModelTest() { @Suppress("MaxLineLength") fun `on VaultDataReceive with Loaded and nonnull true permission data should update the ViewState with cipher permissions`() { val viewState = mockk() - every { - featureFlagManager.getFeatureFlag(FlagKey.RestrictCipherItemDeletion) - } returns true every { mockCipherView.organizationId } returns "mockOrganizationId" every { mockCipherView.deletedDate } returns Instant.MIN every { mockCipherView.collectionIds } returns listOf("mockId-1") @@ -2466,7 +2455,6 @@ class VaultItemViewModelTest : BaseViewModelTest() { organizationEventManager = eventManager, environmentRepository = environmentRepository, settingsRepository = settingsRepository, - featureFlagManager = featureFlagManager, snackbarRelayManager = snackbarRelayManager, ) diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt index efe9294778..5c6c2c7342 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/debugmenu/components/FeatureFlagListItems.kt @@ -27,7 +27,6 @@ fun FlagKey.ListItemContent( FlagKey.CredentialExchangeProtocolExport, FlagKey.CredentialExchangeProtocolImport, FlagKey.RemoveCardPolicy, - FlagKey.RestrictCipherItemDeletion, FlagKey.UserManagedPrivilegedApps, -> BooleanFlagItem( label = flagKey.getDisplayLabel(), @@ -69,7 +68,6 @@ private fun FlagKey.getDisplayLabel(): String = when (this) { FlagKey.CredentialExchangeProtocolImport -> stringResource(BitwardenString.cxp_import) FlagKey.CredentialExchangeProtocolExport -> stringResource(BitwardenString.cxp_export) FlagKey.CipherKeyEncryption -> stringResource(BitwardenString.cipher_key_encryption) - FlagKey.RestrictCipherItemDeletion -> stringResource(BitwardenString.restrict_item_deletion) FlagKey.UserManagedPrivilegedApps -> { stringResource(BitwardenString.user_trusted_privileged_app_management) } diff --git a/core/src/main/kotlin/com/bitwarden/core/data/manager/model/FlagKey.kt b/core/src/main/kotlin/com/bitwarden/core/data/manager/model/FlagKey.kt index 8054527f0a..c2ad8d30f9 100644 --- a/core/src/main/kotlin/com/bitwarden/core/data/manager/model/FlagKey.kt +++ b/core/src/main/kotlin/com/bitwarden/core/data/manager/model/FlagKey.kt @@ -32,7 +32,6 @@ sealed class FlagKey { listOf( CredentialExchangeProtocolImport, CredentialExchangeProtocolExport, - RestrictCipherItemDeletion, UserManagedPrivilegedApps, RemoveCardPolicy, ) @@ -65,14 +64,6 @@ sealed class FlagKey { override val defaultValue: Boolean = false } - /** - * Data object holding the feature flag key to enable the restriction of cipher item deletion - */ - data object RestrictCipherItemDeletion : FlagKey() { - override val keyName: String = "pm-15493-restrict-item-deletion-to-can-manage-permission" - override val defaultValue: Boolean = false - } - /** * Data object holding the feature flag key to enabled user-managed privileged apps. */ diff --git a/core/src/test/kotlin/com/bitwarden/core/data/manager/model/FlagKeyTest.kt b/core/src/test/kotlin/com/bitwarden/core/data/manager/model/FlagKeyTest.kt index 5e1d16ae44..b620912d5a 100644 --- a/core/src/test/kotlin/com/bitwarden/core/data/manager/model/FlagKeyTest.kt +++ b/core/src/test/kotlin/com/bitwarden/core/data/manager/model/FlagKeyTest.kt @@ -20,10 +20,6 @@ class FlagKeyTest { FlagKey.CipherKeyEncryption.keyName, "cipher-key-encryption", ) - assertEquals( - FlagKey.RestrictCipherItemDeletion.keyName, - "pm-15493-restrict-item-deletion-to-can-manage-permission", - ) assertEquals( FlagKey.UserManagedPrivilegedApps.keyName, "pm-18970-user-managed-privileged-apps", @@ -45,7 +41,6 @@ class FlagKeyTest { FlagKey.CredentialExchangeProtocolImport, FlagKey.CredentialExchangeProtocolExport, FlagKey.CipherKeyEncryption, - FlagKey.RestrictCipherItemDeletion, FlagKey.UserManagedPrivilegedApps, FlagKey.RemoveCardPolicy, FlagKey.BitwardenAuthenticationEnabled, diff --git a/ui/src/main/res/values/strings_non_localized.xml b/ui/src/main/res/values/strings_non_localized.xml index abc43f075d..efb1d557ca 100644 --- a/ui/src/main/res/values/strings_non_localized.xml +++ b/ui/src/main/res/values/strings_non_localized.xml @@ -18,7 +18,6 @@ This will force the change to app state which will cause the first time carousel to show. The carousel will continue to show for any \"new\" account until a login is completed. May need to exit debug menu manually. Cipher Key Encryption Reset all coach mark tours - Restrict item deletion Generate crash Generate error report Error reports