From 0f914109872420a7aae43bfec7a89509d58f8c03 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 3 Nov 2020 12:54:03 +0100 Subject: [PATCH] implement basic modal for winning challenge --- .../challenge_won_gem_confetti.png | Bin 0 -> 6996 bytes .../challenge_won_gem_confetti.png | Bin 0 -> 3947 bytes .../challenge_won_gem_confetti.png | Bin 0 -> 10030 bytes .../challenge_won_gem_confetti.png | Bin 0 -> 16768 bytes .../challenge_won_gem_confetti.png | Bin 0 -> 23886 bytes Habitica/res/layout/dialog_won_challenge.xml | 36 ++++++++++++++++++ Habitica/res/values/strings.xml | 5 +++ .../habitica/events/ShowWonChallengeDialog.kt | 3 ++ .../habitica/helpers/NotificationsManager.kt | 11 ++++-- .../android/habitica/models/Notification.kt | 1 + .../habitica/ui/activities/MainActivity.kt | 18 +++++++-- .../ui/views/dialogs/WonChallengeDialog.kt | 20 ++++++++++ 12 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 Habitica/res/drawable-hdpi/challenge_won_gem_confetti.png create mode 100644 Habitica/res/drawable-mdpi/challenge_won_gem_confetti.png create mode 100644 Habitica/res/drawable-xhdpi/challenge_won_gem_confetti.png create mode 100644 Habitica/res/drawable-xxhdpi/challenge_won_gem_confetti.png create mode 100644 Habitica/res/drawable-xxxhdpi/challenge_won_gem_confetti.png create mode 100644 Habitica/res/layout/dialog_won_challenge.xml create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowWonChallengeDialog.kt create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/WonChallengeDialog.kt diff --git a/Habitica/res/drawable-hdpi/challenge_won_gem_confetti.png b/Habitica/res/drawable-hdpi/challenge_won_gem_confetti.png new file mode 100644 index 0000000000000000000000000000000000000000..f3452f064b7570aa86af5f163d093d3d5a0ddc56 GIT binary patch literal 6996 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-mdpi/challenge_won_gem_confetti.png b/Habitica/res/drawable-mdpi/challenge_won_gem_confetti.png new file mode 100644 index 0000000000000000000000000000000000000000..03e3f959b5344dbcab2a00d01322d2377bbc5539 GIT binary patch literal 3947 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/challenge_won_gem_confetti.png b/Habitica/res/drawable-xxhdpi/challenge_won_gem_confetti.png new file mode 100644 index 0000000000000000000000000000000000000000..44b5516fa9067983ac658daa88e5616e766d54bd GIT binary patch literal 16768 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 + + + + + + + + \ No newline at end of file diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 3b42f14b9..b3863ff66 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -1121,4 +1121,9 @@ Open Website End Challenge To end a Challenge, log in to the Habitica website then tap the “End Challenge” button on the right of the Challenge screen. + Hurray! + You won a Challenge + 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. 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 new file mode 100644 index 000000000..d06a5847e --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/events/ShowWonChallengeDialog.kt @@ -0,0 +1,3 @@ +package com.habitrpg.android.habitica.events + +class ShowWonChallengeDialog(val id: String) 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 ee88b2c4c..702a72b30 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 @@ -4,10 +4,7 @@ import android.content.Context import com.google.firebase.analytics.FirebaseAnalytics import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.data.ApiClient -import com.habitrpg.android.habitica.events.ShowAchievementDialog -import com.habitrpg.android.habitica.events.ShowCheckinDialog -import com.habitrpg.android.habitica.events.ShowFirstDropDialog -import com.habitrpg.android.habitica.events.ShowSnackbarEvent +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.FirstDropData @@ -73,6 +70,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.WON_CHALLENGE.type -> displayWonChallengeNotificaiton(it) Notification.Type.ACHIEVEMENT_GENERIC.type -> displayAchievementNotification(it, notifications.find { notif -> notif.type == Notification.Type.ACHIEVEMENT_ONBOARDING_COMPLETE.type } != null) @@ -90,6 +88,11 @@ class NotificationsManager (private val context: Context) { return true } + private fun displayWonChallengeNotificaiton(notification: Notification): Any { + EventBus.getDefault().post(ShowWonChallengeDialog(notification.id)) + return true + } + private fun displayFirstDropNotification(notification: Notification): Boolean { val data = (notification.data as? FirstDropData) EventBus.getDefault().post(ShowFirstDropDialog(data?.egg ?: "", data?.hatchingPotion ?: "", notification.id)) 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 95c75dc70..7201242a0 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 @@ -13,6 +13,7 @@ class Notification { GROUP_TASK_APPROVED("GROUP_TASK_APPROVED"), GROUP_TASK_REQUIRES_APPROVAL("GROUP_TASK_REQUIRES_APPROVAL"), UNALLOCATED_STATS_POINTS("UNALLOCATED_STATS_POINTS"), + WON_CHALLENGE("WON_CHALLENGE"), //Achievements ACHIEVEMENT_PARTY_UP("ACHIEVEMENT_PARTY_UP"), 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 398580c91..4681a402c 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 @@ -63,10 +63,7 @@ import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.SnackbarDisplayType import com.habitrpg.android.habitica.ui.views.ValueBar -import com.habitrpg.android.habitica.ui.views.dialogs.AchievementDialog -import com.habitrpg.android.habitica.ui.views.dialogs.FirstDropDialog -import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog -import com.habitrpg.android.habitica.ui.views.dialogs.QuestCompletedDialog +import com.habitrpg.android.habitica.ui.views.dialogs.* import com.habitrpg.android.habitica.ui.views.yesterdailies.YesterdailyDialog import com.habitrpg.android.habitica.userpicture.BitmapUtils import com.habitrpg.android.habitica.widget.AvatarStatsWidgetProvider @@ -814,6 +811,19 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction { }, RxErrorHandler.handleEmptyError())) } + @Subscribe + fun showWonAchievementDialog(event: ShowWonChallengeDialog) { + compositeSubscription.add(Completable.complete() + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + retrieveUser(true) + val dialog = WonChallengeDialog(this) + dialog.enqueue() + apiClient.readNotification(event.id) + .subscribe({ }, RxErrorHandler.handleEmptyError()) + }, RxErrorHandler.handleEmptyError())) + } + override fun onEvent(event: ShowConnectionProblemEvent) { if (event.title != null) { super.onEvent(event) 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 new file mode 100644 index 000000000..b26b830ce --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/WonChallengeDialog.kt @@ -0,0 +1,20 @@ +package com.habitrpg.android.habitica.ui.views.dialogs + +import android.content.Context +import android.view.LayoutInflater +import com.facebook.drawee.view.SimpleDraweeView +import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils + +class WonChallengeDialog(context: Context) : HabiticaAlertDialog(context) { + init { + val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as? LayoutInflater + val view = inflater?.inflate(R.layout.dialog_won_challenge, null) + setTitle(R.string.you_won_challenge) + + DataBindingUtils.loadImage(view?.findViewById(R.id.hatchingPotion_view), "achievement-karaoke2x") + + setAdditionalContentView(view) + addButton(R.string.hurray, true) + } +}