diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragmentTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragmentTest.kt index fcfbee05a..3fc9f9aa0 100644 --- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragmentTest.kt +++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragmentTest.kt @@ -132,7 +132,7 @@ internal class StableRecyclerFragmentTest : FragmentTestCase val dialog = InsufficientGemsDialog(activity, 3) + Analytics.sendEvent("show insufficient gems modal", EventCategory.BEHAVIOUR, HitType.EVENT, mapOf("reason" to "class change")) dialog.show() } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt index 95e53f6aa..cba8e3372 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt @@ -25,6 +25,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.databinding.BottomSheetBackgroundsFilterBinding import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding import com.habitrpg.android.habitica.extensions.setTintWith +import com.habitrpg.android.habitica.helpers.Analytics import com.habitrpg.android.habitica.models.CustomizationFilter import com.habitrpg.android.habitica.models.inventory.Customization import com.habitrpg.android.habitica.models.user.OwnedCustomization @@ -148,6 +149,8 @@ class AvatarCustomizationFragment : Log.e("NewFilter", it.toString()) } } + + Analytics.sendNavigationEvent("$type screen") } override fun onDestroy() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt index e4f7db810..6c8ddb1d2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt @@ -10,6 +10,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding +import com.habitrpg.android.habitica.helpers.Analytics import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.adapter.CustomizationEquipmentRecyclerViewAdapter import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment @@ -97,6 +98,8 @@ class AvatarEquipmentFragment : this.loadEquipment() userViewModel.user.observe(viewLifecycleOwner) { updateUser(it) } + + Analytics.sendNavigationEvent("$type screen") } private fun loadEquipment() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt index d2ff83aa5..c7e8b0249 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt @@ -16,7 +16,10 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding +import com.habitrpg.android.habitica.helpers.Analytics import com.habitrpg.android.habitica.helpers.AppConfigManager +import com.habitrpg.android.habitica.helpers.EventCategory +import com.habitrpg.android.habitica.helpers.HitType import com.habitrpg.android.habitica.models.shops.Shop import com.habitrpg.android.habitica.models.shops.ShopCategory import com.habitrpg.android.habitica.models.shops.ShopItem @@ -214,6 +217,8 @@ open class ShopFragment : BaseMainFragment() .map { rewards -> rewards.map { it.key } } .collect { adapter?.setPinnedItemKeys(it) } } + + Analytics.sendNavigationEvent("$shopIdentifier screen") } open fun initializeCurrencyViews() { @@ -231,6 +236,7 @@ open class ShopFragment : BaseMainFragment() context?.let { context -> if (user.gemCount <= 2) { val dialog = mainActivity?.let { InsufficientGemsDialog(it, 3) } + Analytics.sendEvent("show insufficient gems modal", EventCategory.BEHAVIOUR, HitType.EVENT, mapOf("reason" to "class change")) dialog?.show() return@launch } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt index 9fe5155a4..6185a7c3d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt @@ -20,7 +20,10 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.data.ContentRepository import com.habitrpg.android.habitica.extensions.addCancelButton +import com.habitrpg.android.habitica.helpers.Analytics import com.habitrpg.android.habitica.helpers.AppConfigManager +import com.habitrpg.android.habitica.helpers.EventCategory +import com.habitrpg.android.habitica.helpers.HitType import com.habitrpg.android.habitica.helpers.SoundManager import com.habitrpg.android.habitica.helpers.TaskAlarmManager import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager @@ -175,6 +178,7 @@ class PreferencesFragment : } else { activity?.let { activity -> val dialog = InsufficientGemsDialog(activity, 3) + Analytics.sendEvent("show insufficient gems modal", EventCategory.BEHAVIOUR, HitType.EVENT, mapOf("reason" to "class change")) dialog.show() } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt index 6140962c3..c89dc8a70 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt @@ -10,6 +10,9 @@ import androidx.lifecycle.lifecycleScope import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.DialogHatchPetButtonBinding import com.habitrpg.android.habitica.databinding.DialogPetSuggestHatchBinding +import com.habitrpg.android.habitica.helpers.Analytics +import com.habitrpg.android.habitica.helpers.EventCategory +import com.habitrpg.android.habitica.helpers.HitType import com.habitrpg.android.habitica.interactors.HatchPetUseCase import com.habitrpg.android.habitica.models.inventory.Animal import com.habitrpg.android.habitica.models.inventory.Egg @@ -52,6 +55,11 @@ class PetSuggestHatchDialog(context: Context) : HabiticaAlertDialog(context) { userViewModel = hiltEntryPoint.mainUserViewModel() } + override fun show() { + super.show() + Analytics.sendNavigationEvent("pet suggestion modal") + } + fun configure( pet: Animal, egg: Egg?, @@ -158,6 +166,7 @@ class PetSuggestHatchDialog(context: Context) : HabiticaAlertDialog(context) { val activity = (getActivity() as? MainActivity) ?: return@addButton if ((userViewModel.user.value?.gemCount ?: hatchPrice) < hatchPrice) { InsufficientGemsDialog(activity, hatchPrice).show() + Analytics.sendEvent("show insufficient gems modal", EventCategory.BEHAVIOUR, HitType.EVENT, mapOf("reason" to "pet suggest modal")) return@addButton } val thisPotion = potion ?: return@addButton diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt index 5932363fc..4ec28620d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt @@ -20,7 +20,10 @@ import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.extensions.addCancelButton import com.habitrpg.android.habitica.extensions.addCloseButton import com.habitrpg.android.habitica.extensions.getShortRemainingString +import com.habitrpg.android.habitica.helpers.Analytics +import com.habitrpg.android.habitica.helpers.EventCategory import com.habitrpg.android.habitica.helpers.HapticFeedbackManager +import com.habitrpg.android.habitica.helpers.HitType import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.models.shops.Shop import com.habitrpg.android.habitica.models.shops.ShopItem @@ -359,6 +362,7 @@ class PurchaseDialog( } "gold" == shopItem.currency -> InsufficientGoldDialog(context) "gems" == shopItem.currency -> { + Analytics.sendEvent("show insufficient gems modal", EventCategory.BEHAVIOUR, HitType.EVENT, mapOf("reason" to "purchase modal", "item" to shopItem.key)) parentActivity?.let { activity -> InsufficientGemsDialog(activity, shopItem.value) } } "hourglasses" == shopItem.currency -> InsufficientHourglassesDialog(context) diff --git a/version.properties b/version.properties index 505d59851..db9fad675 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ NAME=4.2.4 -CODE=6261 \ No newline at end of file +CODE=6271 \ No newline at end of file