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