From 0f05045d2df003221e5e7982ffd957ff22060f71 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 25 Jun 2020 14:39:06 +0200 Subject: [PATCH] fix notification display issue --- Habitica/build.gradle | 2 +- .../habitica/helpers/NotificationsManager.kt | 28 ++++++++++++------- .../habitica/ui/activities/MainActivity.kt | 1 + .../inventory/MountDetailRecyclerAdapter.kt | 2 +- .../inventory/PetDetailRecyclerAdapter.kt | 2 +- Habitica/staff/release/output.json | 4 +-- 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/Habitica/build.gradle b/Habitica/build.gradle index b422cc1e8..2a14fd66e 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -162,7 +162,7 @@ android { multiDexEnabled true resConfigs "en", "bg", "de", "en-rGB", "es", "fr", "hr-rHR", "in", "it", "iw", "ja", "ko", "lt", "nl", "pl", "pt-rBR", "pt-rPT", "ru", "tr", "zh", "zh-rTW" - versionCode 2450 + versionCode 2459 versionName "2.7" } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt index 26a785629..fb06fd50f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt @@ -15,12 +15,17 @@ import com.habitrpg.android.habitica.models.notifications.FirstDropData import com.habitrpg.android.habitica.models.notifications.LoginIncentiveData import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar +import com.habitrpg.android.habitica.ui.views.dialogs.AchievementDialog import io.reactivex.BackpressureStrategy +import io.reactivex.Completable import io.reactivex.Flowable +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.functions.Action import io.reactivex.functions.Consumer import io.reactivex.subjects.BehaviorSubject import org.greenrobot.eventbus.EventBus import java.util.* +import java.util.concurrent.TimeUnit class NotificationsManager (private val context: Context) { private val seenNotifications: MutableMap @@ -74,7 +79,7 @@ class NotificationsManager (private val context: Context) { Notification.Type.ACHIEVEMENT_GUILD_JOINED.type -> displayAchievementNotification(it) Notification.Type.ACHIEVEMENT_CHALLENGE_JOINED.type -> displayAchievementNotification(it) Notification.Type.ACHIEVEMENT_INVITED_FRIEND.type -> displayAchievementNotification(it) - Notification.Type.ACHIEVEMENT_GENERIC.type -> displayGenericAchievementNotification(it, notifications.find { notif -> + Notification.Type.ACHIEVEMENT_GENERIC.type -> displayAchievementNotification(it, notifications.find { notif -> notif.type == Notification.Type.ACHIEVEMENT_ONBOARDING_COMPLETE.type } != null) Notification.Type.ACHIEVEMENT_ONBOARDING_COMPLETE.type -> displayAchievementNotification(it) @@ -117,15 +122,18 @@ class NotificationsManager (private val context: Context) { return true } - private fun displayAchievementNotification(notification: Notification): Boolean { - EventBus.getDefault().post(ShowAchievementDialog(notification.type ?: "", notification.id)) - logOnboardingEvents(notification.type ?: "") - return true - } - - private fun displayGenericAchievementNotification(notification: Notification, isLastOnboardingAchievement: Boolean): Boolean { - val achievement = (notification.data as? AchievementData)?.achievement ?: "" - EventBus.getDefault().post(ShowAchievementDialog(achievement, notification.id, isLastOnboardingAchievement)) + private fun displayAchievementNotification(notification: Notification, isLastOnboardingAchievement: Boolean = false): Boolean { + val achievement = (notification.data as? AchievementData)?.achievement ?: notification.type ?: "" + val delay: Long = if (achievement == "createdTask" || achievement == Notification.Type.ACHIEVEMENT_ONBOARDING_COMPLETE.type) { + 1000 + } else { + 200 + } + val sub = Completable.complete() + .delay(delay, TimeUnit.MILLISECONDS) + .subscribe(Action { + EventBus.getDefault().post(ShowAchievementDialog(achievement, notification.id, isLastOnboardingAchievement)) + }, RxErrorHandler.handleEmptyError()) logOnboardingEvents(achievement) return true } 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 261c89322..0f91f2bb3 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 @@ -81,6 +81,7 @@ import io.realm.Realm import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import java.util.* +import java.util.concurrent.TimeUnit import javax.inject.Inject open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt index 34b0d5d0f..8608edbad 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt @@ -97,7 +97,7 @@ class MountDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdat return } val menu = BottomSheetMenu(itemView.context) - menu.addMenuItem(BottomSheetMenuItem(resources.getString(R.string.use_animal))) + menu.addMenuItem(BottomSheetMenuItem(resources.getString(R.string.equip))) menu.setSelectionRunnable { animal?.let { equipEvents.onNext(it.key) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt index 9ba351dd4..06934530d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt @@ -131,7 +131,7 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B } val context = context ?: return val menu = BottomSheetMenu(context) - menu.addMenuItem(BottomSheetMenuItem(itemView.resources.getString(R.string.use_animal))) + menu.addMenuItem(BottomSheetMenuItem(itemView.resources.getString(R.string.equip))) if (canRaiseToMount) { menu.addMenuItem(BottomSheetMenuItem(itemView.resources.getString(R.string.feed))) } diff --git a/Habitica/staff/release/output.json b/Habitica/staff/release/output.json index 17c180bb4..de4c44ce8 100644 --- a/Habitica/staff/release/output.json +++ b/Habitica/staff/release/output.json @@ -11,8 +11,8 @@ "type": "SINGLE", "filters": [], "properties": [], - "versionCode": 2450, - "versionName": "2450", + "versionCode": 2459, + "versionName": "2459", "enabled": true, "outputFile": "Habitica-staff-release.apk" }