mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-2621 Membership | Users notice text (#1388)
This commit is contained in:
parent
136cbf3ed1
commit
3330a43e08
6 changed files with 77 additions and 43 deletions
|
@ -190,17 +190,14 @@ private fun MembershipTierData.mapActiveTierButtonAndNameStates(
|
|||
id == MembershipConstants.EXPLORER_ID -> {
|
||||
TierButton.ChangeEmail to TierAnyName.Hidden
|
||||
}
|
||||
paymentMethod == METHOD_NONE || paymentMethod == METHOD_CRYPTO -> {
|
||||
paymentMethod == METHOD_NONE -> {
|
||||
TierButton.Hidden to TierAnyName.Hidden
|
||||
}
|
||||
paymentMethod == METHOD_STRIPE && !stripeManageUrl.isNullOrBlank() -> {
|
||||
TierButton.Manage.External.Enabled(stripeManageUrl) to TierAnyName.Hidden
|
||||
paymentMethod == METHOD_STRIPE || paymentMethod == METHOD_CRYPTO -> {
|
||||
TierButton.HiddenWithText.ManageOnDesktop to TierAnyName.Hidden
|
||||
}
|
||||
paymentMethod == METHOD_INAPP_APPLE && !iosManageUrl.isNullOrBlank() -> {
|
||||
TierButton.Manage.External.Enabled(iosManageUrl) to TierAnyName.Hidden
|
||||
}
|
||||
paymentMethod == METHOD_INAPP_GOOGLE -> {
|
||||
TierButton.Manage.External.Enabled(androidManageUrl) to TierAnyName.Hidden
|
||||
paymentMethod == METHOD_INAPP_APPLE -> {
|
||||
TierButton.HiddenWithText.ManageOnIOS to TierAnyName.Hidden
|
||||
}
|
||||
else -> {
|
||||
TierButton.Hidden to TierAnyName.Hidden
|
||||
|
|
|
@ -62,6 +62,8 @@ sealed class TierButton {
|
|||
data object DifferentPurchaseAccountId : HiddenWithText()
|
||||
data object DifferentPurchaseProductId : HiddenWithText()
|
||||
data object MoreThenOnePurchase : HiddenWithText()
|
||||
data object ManageOnDesktop : HiddenWithText()
|
||||
data object ManageOnIOS : HiddenWithText()
|
||||
}
|
||||
sealed class Submit : TierButton() {
|
||||
data object Enabled : Submit()
|
||||
|
@ -85,10 +87,6 @@ sealed class TierButton {
|
|||
data class Enabled(val productId: String?) : Android()
|
||||
data object Disabled : Android()
|
||||
}
|
||||
sealed class External : Manage() {
|
||||
data class Enabled(val manageUrl: String?) : External()
|
||||
data object Disabled : External()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -263,6 +263,14 @@ private fun MainButton(
|
|||
val text = stringResource(id = R.string.membership_support_more_then_one_subscription)
|
||||
SupportText(text = text)
|
||||
}
|
||||
TierButton.HiddenWithText.ManageOnDesktop -> {
|
||||
val text = stringResource(id = R.string.membership_manage_tier_desktop)
|
||||
SupportText(text = text)
|
||||
}
|
||||
TierButton.HiddenWithText.ManageOnIOS -> {
|
||||
val text = stringResource(id = R.string.membership_manage_tier_ios)
|
||||
SupportText(text = text)
|
||||
}
|
||||
else -> {
|
||||
val (stringRes, enabled) = getButtonText(buttonState)
|
||||
ButtonPrimary(
|
||||
|
@ -345,26 +353,53 @@ private fun SecondaryButton(
|
|||
buttonState: TierButton,
|
||||
actionTier: (TierAction) -> Unit
|
||||
) {
|
||||
if (buttonState !is TierButton.Hidden) {
|
||||
val (stringRes, enabled) = getButtonText(buttonState)
|
||||
ButtonSecondary(
|
||||
enabled = enabled,
|
||||
text = stringResource(id = stringRes),
|
||||
onClick = {
|
||||
when (buttonState) {
|
||||
is TierButton.Pay.Enabled -> actionTier(TierAction.PayClicked(tierId))
|
||||
is TierButton.Manage.Android.Enabled -> actionTier(TierAction.ManagePayment(tierId))
|
||||
TierButton.Submit.Enabled -> actionTier(TierAction.SubmitClicked)
|
||||
TierButton.ChangeEmail -> actionTier(TierAction.ChangeEmail)
|
||||
else -> {}
|
||||
}
|
||||
when (buttonState) {
|
||||
TierButton.Hidden -> {}
|
||||
TierButton.HiddenWithText.DifferentPurchaseAccountId -> {
|
||||
val text = stringResource(id = R.string.membership_support_already_acquired)
|
||||
SupportText(text = text)
|
||||
}
|
||||
|
||||
},
|
||||
size = ButtonSize.Large,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 20.dp)
|
||||
)
|
||||
TierButton.HiddenWithText.DifferentPurchaseProductId -> {
|
||||
val text = stringResource(id = R.string.membership_support_different_subscription)
|
||||
SupportText(text = text)
|
||||
}
|
||||
|
||||
TierButton.HiddenWithText.MoreThenOnePurchase -> {
|
||||
val text = stringResource(id = R.string.membership_support_more_then_one_subscription)
|
||||
SupportText(text = text)
|
||||
}
|
||||
|
||||
TierButton.HiddenWithText.ManageOnDesktop -> {
|
||||
val text = stringResource(id = R.string.membership_manage_tier_desktop)
|
||||
SupportText(text = text)
|
||||
}
|
||||
|
||||
TierButton.HiddenWithText.ManageOnIOS -> {
|
||||
val text = stringResource(id = R.string.membership_manage_tier_ios)
|
||||
SupportText(text = text)
|
||||
}
|
||||
else -> {
|
||||
val (stringRes, enabled) = getButtonText(buttonState)
|
||||
ButtonSecondary(
|
||||
enabled = enabled,
|
||||
text = stringResource(id = stringRes),
|
||||
onClick = {
|
||||
when (buttonState) {
|
||||
is TierButton.Pay.Enabled -> actionTier(TierAction.PayClicked(tierId))
|
||||
is TierButton.Manage.Android.Enabled -> actionTier(TierAction.ManagePayment(tierId))
|
||||
TierButton.Submit.Enabled -> actionTier(TierAction.SubmitClicked)
|
||||
TierButton.ChangeEmail -> actionTier(TierAction.ChangeEmail)
|
||||
else -> {}
|
||||
}
|
||||
|
||||
},
|
||||
size = ButtonSize.Large,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 20.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -376,8 +411,6 @@ private fun getButtonText(buttonState: TierButton): Pair<Int, Boolean> {
|
|||
is TierButton.Info.Enabled -> Pair(R.string.payments_button_info, true)
|
||||
TierButton.Manage.Android.Disabled -> Pair(R.string.payments_button_manage, false)
|
||||
is TierButton.Manage.Android.Enabled -> Pair(R.string.payments_button_manage, true)
|
||||
TierButton.Manage.External.Disabled -> Pair(R.string.payments_button_manage, false)
|
||||
is TierButton.Manage.External.Enabled -> Pair(R.string.payments_button_manage, true)
|
||||
TierButton.Submit.Disabled -> Pair(R.string.payments_button_submit, false)
|
||||
TierButton.Submit.Enabled -> Pair(R.string.payments_button_submit, true)
|
||||
TierButton.Pay.Disabled -> Pair(R.string.payments_button_pay, false)
|
||||
|
@ -386,6 +419,8 @@ private fun getButtonText(buttonState: TierButton): Pair<Int, Boolean> {
|
|||
TierButton.HiddenWithText.DifferentPurchaseAccountId -> Pair(0, false)
|
||||
TierButton.HiddenWithText.DifferentPurchaseProductId -> Pair(0, false)
|
||||
TierButton.HiddenWithText.MoreThenOnePurchase -> Pair(0, false)
|
||||
TierButton.HiddenWithText.ManageOnDesktop -> Pair(0, false)
|
||||
TierButton.HiddenWithText.ManageOnIOS -> Pair(0, false)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -425,7 +460,7 @@ fun TierViewScreenPreview() {
|
|||
period = TierPeriod.Year(1),
|
||||
payedBy = MembershipPaymentMethod.METHOD_INAPP_GOOGLE
|
||||
),
|
||||
buttonState = TierButton.Pay.Enabled,
|
||||
buttonState = TierButton.HiddenWithText.ManageOnIOS,
|
||||
id = TierId(value = EXPLORER_ID),
|
||||
membershipAnyName = TierAnyName.Visible.Purchased("someanyname111"),
|
||||
email = TierEmail.Visible.Enter,
|
||||
|
@ -434,7 +469,7 @@ fun TierViewScreenPreview() {
|
|||
iosManageUrl = "",
|
||||
androidManageUrl = "",
|
||||
androidProductId = "",
|
||||
paymentMethod = MembershipPaymentMethod.METHOD_INAPP_GOOGLE
|
||||
paymentMethod = MembershipPaymentMethod.METHOD_STRIPE
|
||||
)
|
||||
),
|
||||
actionTier = {},
|
||||
|
|
|
@ -90,7 +90,7 @@ class TierActivePurchasedOniOSTests : MembershipTestsSetup() {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `when payed plan is active, show proper valid and enabled manage button`() = runTest {
|
||||
fun `when payed plan is active, show proper valid and show ios text`() = runTest {
|
||||
turbineScope {
|
||||
val (features, tiers) = commonTestSetup()
|
||||
|
||||
|
@ -134,7 +134,7 @@ class TierActivePurchasedOniOSTests : MembershipTestsSetup() {
|
|||
period = TierPeriod.Year(1),
|
||||
),
|
||||
expectedAnyName = TierAnyName.Hidden,
|
||||
expectedButtonState = TierButton.Manage.External.Enabled(iosManageUrl),
|
||||
expectedButtonState = TierButton.HiddenWithText.ManageOnIOS,
|
||||
expectedId = MembershipConstants.BUILDER_ID,
|
||||
expectedActive = true,
|
||||
expectedEmailState = TierEmail.Hidden
|
||||
|
@ -144,7 +144,7 @@ class TierActivePurchasedOniOSTests : MembershipTestsSetup() {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `when payed plan is active from crypto, show proper valid and hide manage button`() =
|
||||
fun `when payed plan is active from crypto, show proper valid and desktop support text`() =
|
||||
runTest {
|
||||
turbineScope {
|
||||
val (features, tiers) = commonTestSetup()
|
||||
|
@ -199,7 +199,7 @@ class TierActivePurchasedOniOSTests : MembershipTestsSetup() {
|
|||
period = TierPeriod.Year(1),
|
||||
),
|
||||
expectedAnyName = TierAnyName.Hidden,
|
||||
expectedButtonState = TierButton.Hidden,
|
||||
expectedButtonState = TierButton.HiddenWithText.ManageOnDesktop,
|
||||
expectedId = MembershipConstants.BUILDER_ID,
|
||||
expectedActive = true,
|
||||
expectedEmailState = TierEmail.Hidden
|
||||
|
|
|
@ -92,7 +92,7 @@ class TierAndroidActivePurchasedOniOS : MembershipTestsSetup() {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `when payed plan is active, show proper valid and enabled manage button`() = runTest {
|
||||
fun `when payed plan is active, show proper valid and show support ios text`() = runTest {
|
||||
turbineScope {
|
||||
val (features, tiers) = commonTestSetup()
|
||||
|
||||
|
@ -136,7 +136,7 @@ class TierAndroidActivePurchasedOniOS : MembershipTestsSetup() {
|
|||
period = TierPeriod.Year(1),
|
||||
),
|
||||
expectedAnyName = TierAnyName.Hidden,
|
||||
expectedButtonState = TierButton.Manage.External.Enabled(iosManageUrl),
|
||||
expectedButtonState = TierButton.HiddenWithText.ManageOnIOS,
|
||||
expectedId = MembershipConstants.BUILDER_ID,
|
||||
expectedActive = true,
|
||||
expectedEmailState = TierEmail.Hidden
|
||||
|
@ -146,7 +146,7 @@ class TierAndroidActivePurchasedOniOS : MembershipTestsSetup() {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `when payed plan is active from crypto, show proper valid and hide manage button`() =
|
||||
fun `when payed plan is active from crypto, show proper valid and show support desktop text`() =
|
||||
runTest {
|
||||
turbineScope {
|
||||
val (features, tiers) = commonTestSetup()
|
||||
|
@ -201,7 +201,7 @@ class TierAndroidActivePurchasedOniOS : MembershipTestsSetup() {
|
|||
period = TierPeriod.Year(1),
|
||||
),
|
||||
expectedAnyName = TierAnyName.Hidden,
|
||||
expectedButtonState = TierButton.Hidden,
|
||||
expectedButtonState = TierButton.HiddenWithText.ManageOnDesktop,
|
||||
expectedId = MembershipConstants.BUILDER_ID,
|
||||
expectedActive = true,
|
||||
expectedEmailState = TierEmail.Hidden
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue