Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ private fun SearchDialogs(
when (dialogState) {
SearchState.DialogState.ArchiveRequiresPremium -> {
BitwardenTwoButtonDialog(
title = stringResource(id = BitwardenString.archive_unavailable),
title = stringResource(id = BitwardenString.premium_subscription_required),
message = stringResource(id = BitwardenString.archiving_items_is_a_premium_feature),
confirmButtonText = stringResource(id = BitwardenString.upgrade_to_premium),
dismissButtonText = stringResource(id = BitwardenString.cancel),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -349,15 +349,9 @@ class SendViewModel @Inject constructor(
return
}
if (!state.isPremiumUser) {
val dialog = if (premiumStateManager.isInAppUpgradeAvailable()) {
SendState.DialogState.FileTypeRequiresPremium
} else {
SendState.DialogState.Error(
title = BitwardenString.send.asText(),
message = BitwardenString.send_file_premium_required.asText(),
)
mutableStateFlow.update {
it.copy(dialogState = SendState.DialogState.FileTypeRequiresPremium)
}
mutableStateFlow.update { it.copy(dialogState = dialog) }
return
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,12 +201,10 @@ private fun AddEditSendDialogs(
onUpgradeToPremiumClick: () -> Unit,
) {
when (dialogState) {
is AddEditSendState.DialogState.EmailAuthRequiresPremium -> {
is AddEditSendState.DialogState.PremiumRequired -> {
BitwardenTwoButtonDialog(
title = stringResource(id = BitwardenString.premium_subscription_required),
message = stringResource(
id = BitwardenString.sharing_with_specific_people_is_a_premium_feature,
),
message = dialogState.message(),
confirmButtonText = stringResource(id = BitwardenString.upgrade_to_premium),
dismissButtonText = stringResource(id = BitwardenString.cancel),
onConfirmClick = onUpgradeToPremiumClick,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,13 @@ class AddEditSendViewModel @Inject constructor(
// Check if user is trying to select Email auth without Premium
if (action.sendAuth is SendAuth.Email && !state.isPremium) {
mutableStateFlow.update {
it.copy(dialogState = AddEditSendState.DialogState.EmailAuthRequiresPremium)
it.copy(
dialogState = AddEditSendState.DialogState.PremiumRequired(
message = BitwardenString
.sharing_with_specific_people_is_a_premium_feature
.asText(),
),
)
}
return
}
Expand Down Expand Up @@ -701,8 +707,7 @@ class AddEditSendViewModel @Inject constructor(
// check just in case.
mutableStateFlow.update {
it.copy(
dialogState = AddEditSendState.DialogState.Error(
title = BitwardenString.send.asText(),
dialogState = AddEditSendState.DialogState.PremiumRequired(
message = BitwardenString.send_file_premium_required.asText(),
),
)
Expand Down Expand Up @@ -1036,11 +1041,12 @@ data class AddEditSendState(
) : DialogState()

/**
* Displays a dialog to the user indicating that email authentication requires
* a Premium account.
* Displays a dialog to the user indicating that a Premium account is required.
*/
@Parcelize
data object EmailAuthRequiresPremium : DialogState()
data class PremiumRequired(
val message: Text,
) : DialogState()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,10 @@ import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCardTyp
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCommonHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditIdentityTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditLicenseTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.rememberVaultAddEditPassportTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditLoginTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditSshKeyTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditUserVerificationHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.rememberVaultAddEditPassportTypeHandlers
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.launch
Expand Down Expand Up @@ -500,7 +500,7 @@ private fun VaultAddEditItemDialogs(
when (dialogState) {
is VaultAddEditState.DialogState.ArchiveRequiresPremium -> {
BitwardenTwoButtonDialog(
title = stringResource(id = BitwardenString.archive_unavailable),
title = stringResource(id = BitwardenString.premium_subscription_required),
message = stringResource(id = BitwardenString.archiving_items_is_a_premium_feature),
confirmButtonText = stringResource(id = BitwardenString.upgrade_to_premium),
dismissButtonText = stringResource(id = BitwardenString.cancel),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ private fun AttachmentsDialogs(
) {
when (dialogState) {
AttachmentsState.DialogState.RequiresPremium -> BitwardenTwoButtonDialog(
title = stringResource(id = BitwardenString.attachments_unavailable),
title = stringResource(id = BitwardenString.premium_subscription_required),
message = stringResource(id = BitwardenString.attachments_are_a_premium_feature),
confirmButtonText = stringResource(id = BitwardenString.upgrade_to_premium),
onConfirmClick = attachmentsHandlers.onUpgradeToPremiumClick,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@ import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultBankAccountItemTy
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultCardItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultCommonItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultDriversLicenseItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultPassportItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.rememberVaultPassportItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultIdentityItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultLoginItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultPassportItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultSshKeyItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.rememberVaultPassportItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.model.VaultAddEditType

/**
Expand Down Expand Up @@ -313,7 +313,7 @@ private fun VaultItemDialogs(
when (dialog) {
is VaultItemState.DialogState.ArchiveRequiresPremium -> {
BitwardenTwoButtonDialog(
title = stringResource(id = BitwardenString.archive_unavailable),
title = stringResource(id = BitwardenString.premium_subscription_required),
message = stringResource(id = BitwardenString.archiving_items_is_a_premium_feature),
confirmButtonText = stringResource(id = BitwardenString.upgrade_to_premium),
dismissButtonText = stringResource(id = BitwardenString.cancel),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ fun VaultItemAttachment(

if (shouldShowPremiumWarningDialog) {
BitwardenTwoButtonDialog(
title = stringResource(id = BitwardenString.attachments_unavailable),
title = stringResource(id = BitwardenString.premium_subscription_required),
message = stringResource(id = BitwardenString.attachments_are_a_premium_feature),
confirmButtonText = stringResource(id = BitwardenString.upgrade_to_premium),
dismissButtonText = stringResource(id = BitwardenString.cancel),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -408,7 +408,7 @@ private fun VaultItemListingDialogs(

is VaultItemListingState.DialogState.ArchiveRequiresPremium -> {
BitwardenTwoButtonDialog(
title = stringResource(id = BitwardenString.archive_unavailable),
title = stringResource(id = BitwardenString.premium_subscription_required),
message = stringResource(id = BitwardenString.archiving_items_is_a_premium_feature),
confirmButtonText = stringResource(id = BitwardenString.upgrade_to_premium),
dismissButtonText = stringResource(id = BitwardenString.cancel),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ private fun VaultDialogs(
when (dialogState) {
VaultState.DialogState.ArchiveRequiresPremium -> {
BitwardenTwoButtonDialog(
title = stringResource(id = BitwardenString.archive_unavailable),
title = stringResource(id = BitwardenString.premium_subscription_required),
message = stringResource(id = BitwardenString.archiving_items_is_a_premium_feature),
confirmButtonText = stringResource(id = BitwardenString.upgrade_to_premium),
dismissButtonText = stringResource(id = BitwardenString.cancel),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1079,7 +1079,7 @@ class SearchScreenTest : BitwardenComposeTest() {
}

composeTestRule
.onNodeWithText(text = "Archive unavailable")
.onNodeWithText(text = "Premium subscription required")
.assert(hasAnyAncestor(isDialog()))
.assertIsDisplayed()
composeTestRule
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,12 +161,7 @@ class SendViewModelTest : BaseViewModelTest() {
val viewModel = createViewModel(state = state)
viewModel.trySendAction(SendAction.AddSendSelected(sendType = SendItemType.FILE))
assertEquals(
state.copy(
dialogState = SendState.DialogState.Error(
title = BitwardenString.send.asText(),
message = BitwardenString.send_file_premium_required.asText(),
),
),
state.copy(dialogState = SendState.DialogState.FileTypeRequiresPremium),
viewModel.stateFlow.value,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
import com.bitwarden.ui.platform.components.snackbar.model.BitwardenSnackbarData
import com.bitwarden.ui.platform.manager.IntentManager
import com.bitwarden.ui.platform.manager.exit.ExitManager
import com.bitwarden.ui.platform.resource.BitwardenString
import com.bitwarden.ui.util.asText
import com.bitwarden.ui.util.assertNoDialogExists
import com.bitwarden.ui.util.isEditableText
Expand Down Expand Up @@ -923,7 +924,11 @@ class AddEditSendScreenTest : BitwardenComposeTest() {

mutableStateFlow.update {
it.copy(
dialogState = AddEditSendState.DialogState.EmailAuthRequiresPremium,
dialogState = AddEditSendState.DialogState.PremiumRequired(
message = BitwardenString
.sharing_with_specific_people_is_a_premium_feature
.asText(),
),
)
}

Expand All @@ -944,7 +949,11 @@ class AddEditSendScreenTest : BitwardenComposeTest() {
fun `EmailAuthRequiresPremium dialog Cancel click should send DismissDialogClick`() {
mutableStateFlow.update {
it.copy(
dialogState = AddEditSendState.DialogState.EmailAuthRequiresPremium,
dialogState = AddEditSendState.DialogState.PremiumRequired(
message = BitwardenString
.sharing_with_specific_people_is_a_premium_feature
.asText(),
),
)
}

Expand All @@ -959,7 +968,11 @@ class AddEditSendScreenTest : BitwardenComposeTest() {
fun `EmailAuthRequiresPremium dialog Upgrade click should send UpgradeToPremiumClick`() {
mutableStateFlow.update {
it.copy(
dialogState = AddEditSendState.DialogState.EmailAuthRequiresPremium,
dialogState = AddEditSendState.DialogState.PremiumRequired(
message = BitwardenString
.sharing_with_specific_people_is_a_premium_feature
.asText(),
),
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -491,8 +491,7 @@ class AddEditSendViewModelTest : BaseViewModelTest() {

assertEquals(
initialState.copy(
dialogState = AddEditSendState.DialogState.Error(
title = BitwardenString.send.asText(),
dialogState = AddEditSendState.DialogState.PremiumRequired(
message = BitwardenString.send_file_premium_required.asText(),
),
),
Expand Down Expand Up @@ -1388,7 +1387,11 @@ class AddEditSendViewModelTest : BaseViewModelTest() {
val newState = awaitItem()
assertEquals(
nonPremiumState.copy(
dialogState = AddEditSendState.DialogState.EmailAuthRequiresPremium,
dialogState = AddEditSendState.DialogState.PremiumRequired(
message = BitwardenString
.sharing_with_specific_people_is_a_premium_feature
.asText(),
),
),
newState,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ class VaultAddEditScreenTest : BitwardenComposeTest() {
)

composeTestRule
.onNodeWithText(text = "Archive unavailable")
.onNodeWithText(text = "Premium subscription required")
.assert(hasAnyAncestor(isDialog()))
.assertIsDisplayed()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ class AttachmentsScreenTest : BitwardenComposeTest() {

@Test
fun `requires Premium dialog should be displayed according to state`() {
val requiresPremiumMessage = "Attachments unavailable"
val requiresPremiumMessage = "Premium subscription required"
composeTestRule.onNode(isDialog()).assertDoesNotExist()
composeTestRule.onNodeWithText(requiresPremiumMessage).assertDoesNotExist()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ class VaultItemScreenTest : BitwardenComposeTest() {
}

composeTestRule
.onNodeWithText(text = "Archive unavailable")
.onNodeWithText(text = "Premium subscription required")
.assert(hasAnyAncestor(isDialog()))
.assertIsDisplayed()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2579,7 +2579,7 @@ class VaultItemListingScreenTest : BitwardenComposeTest() {
}

composeTestRule
.onNodeWithText(text = "Archive unavailable")
.onNodeWithText(text = "Premium subscription required")
.assert(hasAnyAncestor(isDialog()))
.assertIsDisplayed()
composeTestRule
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -874,7 +874,7 @@ class VaultScreenTest : BitwardenComposeTest() {
}

composeTestRule
.onNodeWithText(text = "Archive unavailable")
.onNodeWithText(text = "Premium subscription required")
.assert(hasAnyAncestor(isDialog()))
.assertIsDisplayed()
composeTestRule
Expand Down
2 changes: 0 additions & 2 deletions ui/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,6 @@ Scanning will happen automatically.</string>
<string name="copy_totp_automatically">Copy TOTP automatically</string>
<string name="premium_required">A Premium membership is required to use this feature.</string>
<string name="attachment_deleted">Attachment deleted</string>
<string name="attachments_unavailable">Attachments unavailable</string>
<string name="attachments_are_a_premium_feature">Attachments are a Premium feature. Your current plan does not include access to this feature.</string>
<string name="choose_file">Choose file</string>
<string name="file">File</string>
Expand Down Expand Up @@ -1210,7 +1209,6 @@ Do you want to switch to this account?</string>
<string name="unarchiving">Unarchiving</string>
<string name="item_moved_to_archived">Item moved to archive</string>
<string name="item_moved_to_vault">Item moved to vault</string>
<string name="archive_unavailable">Archive unavailable</string>
<string name="archiving_items_is_a_premium_feature">Archiving items is a Premium feature. Your current plan does not include access to this feature.</string>
<string name="upgrade_to_premium">Upgrade to Premium</string>
<string name="plan">Plan</string>
Expand Down
Loading