1
0
Fork 0
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:
Konstantin Ivanov 2024-07-10 16:11:50 +02:00 committed by konstantiniiv
parent 136cbf3ed1
commit 3330a43e08
6 changed files with 77 additions and 43 deletions

View file

@ -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

View file

@ -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()
}
}
}

View file

@ -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 = {},

View file

@ -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

View file

@ -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