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 + } +}