diff --git a/Habitica/res/layout/fragment_bottomsheet_subscription.xml b/Habitica/res/layout/fragment_bottomsheet_subscription.xml
index c122cc236..8b6496b59 100644
--- a/Habitica/res/layout/fragment_bottomsheet_subscription.xml
+++ b/Habitica/res/layout/fragment_bottomsheet_subscription.xml
@@ -117,180 +117,10 @@
android:src="@drawable/separator_fancy" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="wrap_content" />
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="wrap_content" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt
index bc59db281..a60879bda 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt
@@ -351,7 +351,6 @@ class PurchaseHandler(
try {
apiClient.validateSubscription(validationRequest)
processedPurchase(purchase)
- Analytics.sendEvent("user_subscribed", EventCategory.BEHAVIOUR, HitType.EVENT, mapOf("sku" to (sku ?: "")))
CoroutineScope(Dispatchers.IO).launch(ExceptionHandler.coroutine()) {
acknowledgePurchase(purchase)
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/EventOutcomeSubscriptionBottomSheetFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/EventOutcomeSubscriptionBottomSheetFragment.kt
index 5840eb1aa..a7b6feda2 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/EventOutcomeSubscriptionBottomSheetFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/EventOutcomeSubscriptionBottomSheetFragment.kt
@@ -20,11 +20,13 @@ class EventOutcomeSubscriptionBottomSheetFragment : SubscriptionBottomSheetFragm
private fun setArmoireEventSubscriptionViews() {
binding.subscriberBenefitBanner.visibility = View.GONE
binding.subscribeBenefits.text = getString(R.string.subscribe_second_armoire_open_text)
+ binding.subscriberBenefits.hideArmoireBenefit()
}
private fun setDeathScreenEventSubscriptionViews() {
binding.subscriberBenefitBanner.visibility = View.GONE
binding.subscribeBenefits.text = getString(R.string.subscribe_second_chance_incentive_text)
+ binding.subscriberBenefits.hideDeathBenefit()
}
companion object {
@@ -32,4 +34,4 @@ class EventOutcomeSubscriptionBottomSheetFragment : SubscriptionBottomSheetFragm
const val EVENT_ARMOIRE_OPENED = "armoire_opened"
const val EVENT_DEATH_SCREEN = "death_screen"
}
-}
\ No newline at end of file
+}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionBottomSheetFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionBottomSheetFragment.kt
index 44809b362..8300a9c48 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionBottomSheetFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionBottomSheetFragment.kt
@@ -77,24 +77,6 @@ open class SubscriptionBottomSheetFragment : BottomSheetDialogFragment() {
user?.let { setUser(it) }
}
}
-
- lifecycleScope.launchCatching {
- inventoryRepository.getLatestMysteryItem().collect {
- binding.subBenefitsMysteryItemIcon.loadImage(
- "shop_set_mystery_${
- it.key?.split(
- "_"
- )?.last()
- }"
- )
- binding.subBenefitsMysteryItemText.text =
- context?.getString(R.string.subscribe_listitem3_description_new, it.text)
- }
- }
-
- binding.benefitFaintWrapper.isVisible = appConfigManager.enableFaintSubs()
-
- Analytics.sendNavigationEvent("subscription screen")
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt
index e1426e848..d7e513126 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt
@@ -120,23 +120,6 @@ class SubscriptionFragment : BaseFragment() {
binding?.refreshLayout?.setOnRefreshListener { refresh() }
- lifecycleScope.launchCatching {
- inventoryRepository.getLatestMysteryItem().collect {
- binding?.subBenefitsMysteryItemIcon?.loadImage(
- "shop_set_mystery_${
- it.key?.split(
- "_"
- )?.last()
- }"
- )
- binding?.subBenefitsMysteryItemText?.text =
- context?.getString(R.string.subscribe_listitem3_description_new, it.text)
- }
- }
-
- binding?.benefitArmoireWrapper?.isVisible = appConfigManager.enableArmoireSubs()
- binding?.benefitFaintWrapper?.isVisible = appConfigManager.enableFaintSubs()
-
Analytics.sendNavigationEvent("subscription screen")
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriberBenefitView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriberBenefitView.kt
new file mode 100644
index 000000000..28d3b4458
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriberBenefitView.kt
@@ -0,0 +1,73 @@
+package com.habitrpg.android.habitica.ui.views.subscriptions
+
+import android.content.Context
+import android.util.AttributeSet
+import android.widget.LinearLayout
+import androidx.core.view.isVisible
+import androidx.lifecycle.lifecycleScope
+import com.habitrpg.android.habitica.R
+import com.habitrpg.android.habitica.data.InventoryRepository
+import com.habitrpg.android.habitica.databinding.SubscriptionBenefitsBinding
+import com.habitrpg.android.habitica.helpers.AppConfigManager
+import com.habitrpg.android.habitica.helpers.PurchaseHandler
+import com.habitrpg.android.habitica.interactors.InsufficientGemsUseCase
+import com.habitrpg.common.habitica.extensions.layoutInflater
+import com.habitrpg.common.habitica.extensions.loadImage
+import com.habitrpg.common.habitica.helpers.launchCatching
+import dagger.hilt.EntryPoint
+import dagger.hilt.InstallIn
+import dagger.hilt.android.EntryPointAccessors
+import dagger.hilt.components.SingletonComponent
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.flow.firstOrNull
+import javax.inject.Inject
+
+class SubscriberBenefitView @JvmOverloads constructor(
+ context: Context, attrs: AttributeSet? = null
+) : LinearLayout(context, attrs) {
+ private val binding: SubscriptionBenefitsBinding
+
+ @Inject
+ lateinit var configManager: AppConfigManager
+ @Inject
+ lateinit var inventoryRepository: InventoryRepository
+
+ @EntryPoint
+ @InstallIn(SingletonComponent::class)
+ interface ThisEntryPoint {
+ fun configManager(): AppConfigManager
+ fun inventoryRepository(): InventoryRepository
+ }
+
+ init {
+ binding = SubscriptionBenefitsBinding.inflate(context.layoutInflater, this)
+ orientation = VERTICAL
+ val hiltEntryPoint = EntryPointAccessors.fromApplication(context, ThisEntryPoint::class.java)
+ configManager = hiltEntryPoint.configManager()
+ inventoryRepository = hiltEntryPoint.inventoryRepository()
+
+ MainScope().launchCatching {
+ val item = inventoryRepository.getLatestMysteryItem().firstOrNull()
+ binding.subBenefitsMysteryItemIcon.loadImage(
+ "shop_set_mystery_${
+ item?.key?.split(
+ "_"
+ )?.last()
+ }"
+ )
+ binding.subBenefitsMysteryItemText.text =
+ context.getString(R.string.subscribe_listitem3_description_new, item?.text)
+ }
+
+ binding.benefitArmoireWrapper.isVisible = configManager.enableArmoireSubs()
+ binding.benefitFaintWrapper.isVisible = configManager.enableFaintSubs()
+ }
+
+ fun hideDeathBenefit() {
+ binding.benefitFaintWrapper.isVisible = false
+ }
+
+ fun hideArmoireBenefit() {
+ binding.benefitArmoireWrapper.isVisible = false
+ }
+}