diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index b3863ff66..36ca0f37f 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -1126,4 +1126,5 @@
Congratulations!
%s selected you as the winner! Your win has been recorded in your Achievements.
You were selected as the winner! Your win has been recorded in your Achievements.
+ Claim %d Gems
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowWonChallengeDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowWonChallengeDialog.kt
index d06a5847e..5a0dabdbc 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowWonChallengeDialog.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowWonChallengeDialog.kt
@@ -1,3 +1,5 @@
package com.habitrpg.android.habitica.events
-class ShowWonChallengeDialog(val id: String)
+import com.habitrpg.android.habitica.models.notifications.ChallengeWonData
+
+class ShowWonChallengeDialog(val id: String, val data: ChallengeWonData?)
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 702a72b30..ae327c2e7 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
@@ -7,6 +7,7 @@ import com.habitrpg.android.habitica.data.ApiClient
import com.habitrpg.android.habitica.events.*
import com.habitrpg.android.habitica.models.Notification
import com.habitrpg.android.habitica.models.notifications.AchievementData
+import com.habitrpg.android.habitica.models.notifications.ChallengeWonData
import com.habitrpg.android.habitica.models.notifications.FirstDropData
import com.habitrpg.android.habitica.models.notifications.LoginIncentiveData
import com.habitrpg.android.habitica.models.user.User
@@ -89,7 +90,7 @@ class NotificationsManager (private val context: Context) {
}
private fun displayWonChallengeNotificaiton(notification: Notification): Any {
- EventBus.getDefault().post(ShowWonChallengeDialog(notification.id))
+ EventBus.getDefault().post(ShowWonChallengeDialog(notification.id, notification.data as? ChallengeWonData))
return true
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Notification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Notification.kt
index 7201242a0..be15690a4 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Notification.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Notification.kt
@@ -56,6 +56,7 @@ class Notification {
Type.QUEST_INVITATION.type -> QuestInvitationData::class.java
Type.FIRST_DROP.type -> FirstDropData::class.java
Type.ACHIEVEMENT_GENERIC.type -> AchievementData::class.java
+ Type.WON_CHALLENGE.type -> ChallengeWonData::class.java
else -> null
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/notifications/ChallengeWonData.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/notifications/ChallengeWonData.kt
new file mode 100644
index 000000000..c4af06165
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/notifications/ChallengeWonData.kt
@@ -0,0 +1,6 @@
+package com.habitrpg.android.habitica.models.notifications
+
+open class ChallengeWonData : NotificationData {
+ var name: String? = null
+ var prize: Int? = null
+}
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 2f1844ad8..91dd84e98 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
@@ -835,6 +835,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
.subscribe({
retrieveUser(true)
val dialog = WonChallengeDialog(this)
+ dialog.configure(event.data)
dialog.enqueue()
apiClient.readNotification(event.id)
.subscribe({ }, RxErrorHandler.handleEmptyError())
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/WonChallengeDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/WonChallengeDialog.kt
index b26b830ce..3fe46d6a7 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/WonChallengeDialog.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/WonChallengeDialog.kt
@@ -2,11 +2,23 @@ package com.habitrpg.android.habitica.ui.views.dialogs
import android.content.Context
import android.view.LayoutInflater
+import android.widget.TextView
import com.facebook.drawee.view.SimpleDraweeView
import com.habitrpg.android.habitica.R
+import com.habitrpg.android.habitica.models.notifications.ChallengeWonData
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
class WonChallengeDialog(context: Context) : HabiticaAlertDialog(context) {
+ fun configure(data: ChallengeWonData?) {
+ if (data != null) {
+ additionalContentView?.findViewById(R.id.description_view)?.text = context.getString(R.string.won_achievement_description, data.name)
+
+ addButton(context.getString(R.string.claim_x_gems, data.prize), true)
+ } else {
+ addButton(R.string.hurray, true)
+ }
+ }
+
init {
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as? LayoutInflater
val view = inflater?.inflate(R.layout.dialog_won_challenge, null)
@@ -15,6 +27,5 @@ class WonChallengeDialog(context: Context) : HabiticaAlertDialog(context) {
DataBindingUtils.loadImage(view?.findViewById(R.id.hatchingPotion_view), "achievement-karaoke2x")
setAdditionalContentView(view)
- addButton(R.string.hurray, true)
}
}