diff --git a/localization/src/main/res/values/strings.xml b/localization/src/main/res/values/strings.xml
index ff1f3bc572..07c3aadc45 100644
--- a/localization/src/main/res/values/strings.xml
+++ b/localization/src/main/res/values/strings.xml
@@ -1537,6 +1537,10 @@
Google subscription
Manage payment
+
+ You can manage tier on Desktop platform
+ You can manage tier on iOS platform
+
Change e-mail
diff --git a/payments/src/main/java/com/anytypeio/anytype/payments/mapping/MembershipExt.kt b/payments/src/main/java/com/anytypeio/anytype/payments/mapping/MembershipExt.kt
index 5587fb6616..ff7e540315 100644
--- a/payments/src/main/java/com/anytypeio/anytype/payments/mapping/MembershipExt.kt
+++ b/payments/src/main/java/com/anytypeio/anytype/payments/mapping/MembershipExt.kt
@@ -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
diff --git a/payments/src/main/java/com/anytypeio/anytype/payments/models/MembershipModels.kt b/payments/src/main/java/com/anytypeio/anytype/payments/models/MembershipModels.kt
index 0fc3a1e049..0a4005f5fd 100644
--- a/payments/src/main/java/com/anytypeio/anytype/payments/models/MembershipModels.kt
+++ b/payments/src/main/java/com/anytypeio/anytype/payments/models/MembershipModels.kt
@@ -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()
- }
}
}
diff --git a/payments/src/main/java/com/anytypeio/anytype/payments/screens/TierScreen.kt b/payments/src/main/java/com/anytypeio/anytype/payments/screens/TierScreen.kt
index 063691b694..b807f18425 100644
--- a/payments/src/main/java/com/anytypeio/anytype/payments/screens/TierScreen.kt
+++ b/payments/src/main/java/com/anytypeio/anytype/payments/screens/TierScreen.kt
@@ -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 {
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 {
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 = {},
diff --git a/payments/src/test/java/com/anytypeio/anytype/payments/TierActivePurchasedOniOSTests.kt b/payments/src/test/java/com/anytypeio/anytype/payments/TierActivePurchasedOniOSTests.kt
index 5d4f36a12f..472a0d749e 100644
--- a/payments/src/test/java/com/anytypeio/anytype/payments/TierActivePurchasedOniOSTests.kt
+++ b/payments/src/test/java/com/anytypeio/anytype/payments/TierActivePurchasedOniOSTests.kt
@@ -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
diff --git a/payments/src/test/java/com/anytypeio/anytype/payments/TierAndroidActivePurchasedOniOS.kt b/payments/src/test/java/com/anytypeio/anytype/payments/TierAndroidActivePurchasedOniOS.kt
index b7e5b25db7..54370ae3f5 100644
--- a/payments/src/test/java/com/anytypeio/anytype/payments/TierAndroidActivePurchasedOniOS.kt
+++ b/payments/src/test/java/com/anytypeio/anytype/payments/TierAndroidActivePurchasedOniOS.kt
@@ -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