mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
implement basic modal for winning challenge
This commit is contained in:
parent
6d4af9f934
commit
0f91410987
12 changed files with 86 additions and 8 deletions
BIN
Habitica/res/drawable-hdpi/challenge_won_gem_confetti.png
Normal file
BIN
Habitica/res/drawable-hdpi/challenge_won_gem_confetti.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.8 KiB |
BIN
Habitica/res/drawable-mdpi/challenge_won_gem_confetti.png
Normal file
BIN
Habitica/res/drawable-mdpi/challenge_won_gem_confetti.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.9 KiB |
BIN
Habitica/res/drawable-xhdpi/challenge_won_gem_confetti.png
Normal file
BIN
Habitica/res/drawable-xhdpi/challenge_won_gem_confetti.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.8 KiB |
BIN
Habitica/res/drawable-xxhdpi/challenge_won_gem_confetti.png
Normal file
BIN
Habitica/res/drawable-xxhdpi/challenge_won_gem_confetti.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
BIN
Habitica/res/drawable-xxxhdpi/challenge_won_gem_confetti.png
Normal file
BIN
Habitica/res/drawable-xxxhdpi/challenge_won_gem_confetti.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
36
Habitica/res/layout/dialog_won_challenge.xml
Normal file
36
Habitica/res/layout/dialog_won_challenge.xml
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical" android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_horizontal">
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/challenge_won_gem_confetti"
|
||||
android:layout_gravity="center"/>
|
||||
<com.facebook.drawee.view.SimpleDraweeView
|
||||
android:id="@+id/achievement_view"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="52dp"
|
||||
android:layout_gravity="center"/>
|
||||
</FrameLayout>
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/congratulations"
|
||||
android:textColor="@color/text_primary"
|
||||
android:textSize="17sp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="2dp"/>
|
||||
<TextView
|
||||
android:id="@+id/description_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/won_achievement_description_noname"
|
||||
android:textColor="@color/text_ternary"
|
||||
android:textSize="15sp"
|
||||
android:gravity="center_horizontal"/>
|
||||
</LinearLayout>
|
||||
|
|
@ -1121,4 +1121,9 @@
|
|||
<string name="open_website">Open Website</string>
|
||||
<string name="action_end_challenge">End Challenge</string>
|
||||
<string name="end_challenge_description">To end a Challenge, log in to the Habitica website then tap the “End Challenge” button on the right of the Challenge screen.</string>
|
||||
<string name="hurray">Hurray!</string>
|
||||
<string name="you_won_challenge">You won a Challenge</string>
|
||||
<string name="congratulations">Congratulations!</string>
|
||||
<string name="won_achievement_description">%s selected you as the winner! Your win has been recorded in your Achievements.</string>
|
||||
<string name="won_achievement_description_noname">You were selected as the winner! Your win has been recorded in your Achievements.</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
package com.habitrpg.android.habitica.events
|
||||
|
||||
class ShowWonChallengeDialog(val id: String)
|
||||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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"),
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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<SimpleDraweeView>(R.id.hatchingPotion_view), "achievement-karaoke2x")
|
||||
|
||||
setAdditionalContentView(view)
|
||||
addButton(R.string.hurray, true)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue