mirror of
https://github.com/bitwarden/android.git
synced 2026-05-11 22:31:17 -05:00
behind feature flag
This commit is contained in:
@@ -122,6 +122,7 @@ fun SendScreen(
|
||||
|
||||
SendDialogs(
|
||||
dialogState = state.dialogState,
|
||||
isSendFolderEnabled = state.isSendFolderEnabled,
|
||||
onAddSendSelected = { viewModel.trySendAction(SendAction.AddSendSelected(it)) },
|
||||
onDismissRequest = { viewModel.trySendAction(SendAction.DismissDialog) },
|
||||
)
|
||||
@@ -211,6 +212,7 @@ fun SendScreen(
|
||||
@Composable
|
||||
private fun SendDialogs(
|
||||
dialogState: SendState.DialogState?,
|
||||
isSendFolderEnabled: Boolean,
|
||||
onAddSendSelected: (SendItemType) -> Unit,
|
||||
onDismissRequest: () -> Unit,
|
||||
) {
|
||||
@@ -230,12 +232,14 @@ private fun SendDialogs(
|
||||
title = stringResource(id = BitwardenString.type),
|
||||
onDismissRequest = onDismissRequest,
|
||||
) {
|
||||
SendItemType.entries.forEach {
|
||||
BitwardenBasicDialogRow(
|
||||
text = it.selectionText(),
|
||||
onClick = { onAddSendSelected(it) },
|
||||
)
|
||||
}
|
||||
SendItemType.entries
|
||||
.filter { it != SendItemType.FOLDER || isSendFolderEnabled }
|
||||
.forEach {
|
||||
BitwardenBasicDialogRow(
|
||||
text = it.selectionText(),
|
||||
onClick = { onAddSendSelected(it) },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
null -> Unit
|
||||
|
||||
@@ -16,8 +16,10 @@ import com.bitwarden.ui.platform.resource.BitwardenDrawable
|
||||
import com.bitwarden.ui.platform.resource.BitwardenString
|
||||
import com.bitwarden.ui.util.Text
|
||||
import com.bitwarden.ui.util.asText
|
||||
import com.bitwarden.core.data.manager.model.FlagKey
|
||||
import com.x8bit.bitwarden.data.auth.repository.AuthRepository
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.UserState
|
||||
import com.x8bit.bitwarden.data.platform.manager.FeatureFlagManager
|
||||
import com.x8bit.bitwarden.data.platform.manager.PolicyManager
|
||||
import com.x8bit.bitwarden.data.platform.manager.clipboard.BitwardenClipboardManager
|
||||
import com.x8bit.bitwarden.data.platform.manager.network.NetworkConnectionManager
|
||||
@@ -59,6 +61,7 @@ class SendViewModel @Inject constructor(
|
||||
private val environmentRepo: EnvironmentRepository,
|
||||
private val vaultRepo: VaultRepository,
|
||||
private val networkConnectionManager: NetworkConnectionManager,
|
||||
featureFlagManager: FeatureFlagManager,
|
||||
) : BaseViewModel<SendState, SendEvent, SendAction>(
|
||||
// We load the state from the savedStateHandle for testing purposes.
|
||||
initialState = savedStateHandle[KEY_STATE]
|
||||
@@ -71,6 +74,8 @@ class SendViewModel @Inject constructor(
|
||||
.any(),
|
||||
isRefreshing = false,
|
||||
isPremiumUser = authRepo.userStateFlow.value?.activeAccount?.isPremium == true,
|
||||
isSendFolderEnabled = featureFlagManager
|
||||
.getFeatureFlag(key = FlagKey.SendFolder),
|
||||
),
|
||||
) {
|
||||
|
||||
@@ -475,6 +480,7 @@ data class SendState(
|
||||
val policyDisablesSend: Boolean,
|
||||
val isRefreshing: Boolean,
|
||||
val isPremiumUser: Boolean,
|
||||
val isSendFolderEnabled: Boolean,
|
||||
) : Parcelable {
|
||||
|
||||
/**
|
||||
|
||||
@@ -38,6 +38,7 @@ sealed class FlagKey<out T : Any> {
|
||||
ArchiveItems,
|
||||
SendEmailVerification,
|
||||
MobilePremiumUpgrade,
|
||||
SendFolder,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -116,6 +117,14 @@ sealed class FlagKey<out T : Any> {
|
||||
override val defaultValue: Boolean = false
|
||||
}
|
||||
|
||||
/**
|
||||
* Data object holding the feature flag key for the Send Folder feature.
|
||||
*/
|
||||
data object SendFolder : FlagKey<Boolean>() {
|
||||
override val keyName: String = "innovation-sprint-2026-send-folder"
|
||||
override val defaultValue: Boolean = false
|
||||
}
|
||||
|
||||
//region Dummy keys for testing
|
||||
/**
|
||||
* Data object holding the key for a [Boolean] flag to be used in tests.
|
||||
|
||||
@@ -32,6 +32,7 @@ fun <T : Any> FlagKey<T>.ListItemContent(
|
||||
FlagKey.ArchiveItems,
|
||||
FlagKey.SendEmailVerification,
|
||||
FlagKey.MobilePremiumUpgrade,
|
||||
FlagKey.SendFolder,
|
||||
-> {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
BooleanFlagItem(
|
||||
@@ -85,4 +86,5 @@ private fun <T : Any> FlagKey<T>.getDisplayLabel(): String = when (this) {
|
||||
FlagKey.ArchiveItems -> stringResource(BitwardenString.archive_items)
|
||||
FlagKey.SendEmailVerification -> stringResource(BitwardenString.send_email_verification)
|
||||
FlagKey.MobilePremiumUpgrade -> stringResource(BitwardenString.mobile_premium_upgrade)
|
||||
FlagKey.SendFolder -> stringResource(BitwardenString.send_folder)
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
<string name="trigger_cookie_acquisition">Trigger cookie acquisition</string>
|
||||
<string name="clear_sso_cookies">Clear SSO cookies</string>
|
||||
<string name="mobile_premium_upgrade">Mobile Premium Upgrade</string>
|
||||
<string name="send_folder">Send Folder</string>
|
||||
|
||||
<!-- endregion Debug Menu -->
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user