diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt index 13d95c675..06b83c1c2 100755 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt @@ -663,7 +663,6 @@ open class MainActivity : BaseActivity(), SnackbarActivity { this.title = newTitle } } - checkForReviewPrompt(user) } } @@ -866,8 +865,4 @@ open class MainActivity : BaseActivity(), SnackbarActivity { binding.content.toolbarTitle.setPadding(0) } } - - private fun checkForReviewPrompt(user: User) { - reviewManager.requestReview(this, user.loginIncentives) - } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt index 0f1655c89..e888b84fe 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt @@ -2,11 +2,13 @@ package com.habitrpg.android.habitica.ui.fragments.inventory.items import android.app.Activity import android.content.Intent +import android.content.SharedPreferences import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.activity.result.contract.ActivityResultContracts +import androidx.core.content.edit import androidx.core.os.bundleOf import androidx.lifecycle.lifecycleScope import androidx.swiperefreshlayout.widget.SwipeRefreshLayout @@ -20,6 +22,7 @@ import com.habitrpg.android.habitica.extensions.addCloseButton 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.helpers.ReviewManager import com.habitrpg.android.habitica.interactors.HatchPetUseCase import com.habitrpg.android.habitica.models.inventory.Egg import com.habitrpg.android.habitica.models.inventory.Food @@ -72,6 +75,11 @@ class ItemRecyclerFragment : @Inject lateinit var userViewModel: MainUserViewModel + @Inject + lateinit var sharedPreferences: SharedPreferences + @Inject + lateinit var reviewManager: ReviewManager + var user: User? = null var adapter: ItemRecyclerAdapter? = null var itemType: String? = null @@ -273,6 +281,24 @@ class ItemRecyclerFragment : it, ), ) + + if (isAdded) { + var hatchCount = sharedPreferences.getInt("pets_hatched", 0) + hatchCount += 1 + sharedPreferences.edit { + putInt("pets_hatched", hatchCount) + } + if (hatchCount >= 2) { + userViewModel.user.observeOnce(viewLifecycleOwner) { user -> + val parentActivity = activity as? MainActivity + val totalCheckIns = user?.loginIncentives + + if (totalCheckIns != null && parentActivity != null) { + reviewManager.requestReview(parentActivity, totalCheckIns) + } + } + } + } } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt index bf6ad8362..9bd3acd9b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt @@ -1,9 +1,11 @@ package com.habitrpg.android.habitica.ui.fragments.inventory.stable +import android.content.SharedPreferences import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.content.edit import androidx.lifecycle.lifecycleScope import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.habitrpg.android.habitica.R @@ -49,14 +51,17 @@ class PetDetailRecyclerFragment : @Inject lateinit var userViewModel: MainUserViewModel + @Inject + lateinit var sharedPreferences: SharedPreferences + @Inject + lateinit var reviewManager: ReviewManager + val adapter: PetDetailRecyclerAdapter = PetDetailRecyclerAdapter() private var animalType: String? = null private var animalGroup: String? = null private var animalColor: String? = null internal var layoutManager: androidx.recyclerview.widget.GridLayoutManager? = null - @Inject - lateinit var reviewManager: ReviewManager override var binding: FragmentRefreshRecyclerviewBinding? = null @@ -135,16 +140,6 @@ class PetDetailRecyclerFragment : lifecycleScope.launchCatching { val items = inventoryRepository.equip("pet", it) adapter.currentPet = items?.currentPet - - if (isAdded) { - userViewModel.user.observeOnce(viewLifecycleOwner) { user -> - val parentActivity = mainActivity - val totalCheckIns = user?.loginIncentives - if (totalCheckIns != null && parentActivity != null) { - reviewManager.requestReview(parentActivity, totalCheckIns) - } - } - } } } userViewModel.user.observe(viewLifecycleOwner) { adapter.currentPet = it?.currentPet } @@ -247,13 +242,31 @@ class PetDetailRecyclerFragment : ): FeedResponse? { if (food != null) { val context = mainActivity ?: context ?: return null - return feedPetUseCase.callInteractor( + val response = feedPetUseCase.callInteractor( FeedPetUseCase.RequestValues( pet, food, context, ), ) + if (isAdded) { + var petFeedings = sharedPreferences.getInt("times_fed", 0) + petFeedings += 1 + sharedPreferences.edit { + putInt("times_fed", petFeedings) + } + if (petFeedings >= 2) { + userViewModel.user.observeOnce(viewLifecycleOwner) { user -> + val parentActivity = mainActivity + val totalCheckIns = user?.loginIncentives + + if (totalCheckIns != null && parentActivity != null) { + reviewManager.requestReview(parentActivity, totalCheckIns) + } + } + } + } + return response } return suspendCoroutine { cont -> val fragment = ItemDialogFragment() diff --git a/fastlane/changelog.txt b/fastlane/changelog.txt index 501d34f37..223fa34a1 100644 --- a/fastlane/changelog.txt +++ b/fastlane/changelog.txt @@ -1,5 +1,6 @@ -New in 4.5: -- Support for new subscription benefits -- Subscribers will now receive a Mystic Hourglass every month -- The amount of Gems subscribers can purchase in the Market will now go up +2 each month they have benefits until reaching a max of 50 -- The amount of Gems subscribers can purchase in the Market will no longer reset if your benefits lapse. Subscribing again will unlock the Gem cap you left off with, even if subscribing at a lower tier. +New in 4.6.0 +- Improvements to reminder scheduling to help them appear on time +- Reminders should no longer appear if a task isn't due that day +- Your avatar now shows at the top of the screen when choosing equipment, letting you see how you look as you try gear on! +- We made it easier to choose what to do with tasks from broken Challenges so they don't get stuck on your task list +- You'll now be able to leave your Party if you're participating in an active Quest diff --git a/version.properties b/version.properties index b4d5de3e3..180e3a60e 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ NAME=4.6.0 -CODE=9311 \ No newline at end of file +CODE=9321 \ No newline at end of file