From 17764880e70f71c4c3dfc19de0cdee9910d5b414 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Mon, 23 Nov 2020 18:13:49 +0100 Subject: [PATCH] Alert fixes --- Habitica/build.gradle | 2 +- .../challenge_won_gem_confetti.png | Bin 0 -> 6961 bytes .../challenge_won_gem_confetti.png | Bin 0 -> 3926 bytes .../challenge_won_gem_confetti.png | Bin 0 -> 9954 bytes .../challenge_won_gem_confetti.png | Bin 0 -> 16728 bytes .../challenge_won_gem_confetti.png | Bin 0 -> 23800 bytes .../won_challenge_icon.png | Bin 0 -> 2293 bytes Habitica/res/layout/activity_intro.xml | 2 +- .../res/layout/dialog_hatch_pet_button.xml | 22 ++++++++++++++++++ Habitica/res/layout/widget_avatar_stats.xml | 8 +++---- Habitica/res/values/colors.xml | 5 ---- Habitica/res/values/strings.xml | 2 +- .../RealmUserLocalRepository.kt | 1 + .../HabiticaFirebaseMessagingService.kt | 9 +++++++ .../habitica/ui/activities/MainActivity.kt | 22 ++++++++++++++++++ .../inventory/StableRecyclerAdapter.kt | 2 +- .../tasks/TaskRecyclerViewFragment.kt | 2 +- .../ui/views/dialogs/HabiticaAlertDialog.kt | 13 +++++++++-- .../ui/views/dialogs/PetSuggestHatchDialog.kt | 20 +++++++--------- .../ui/views/dialogs/WonChallengeDialog.kt | 6 ++--- Habitica/staff/release/output-metadata.json | 2 +- 21 files changed, 86 insertions(+), 32 deletions(-) create mode 100644 Habitica/res/drawable-night-hdpi/challenge_won_gem_confetti.png create mode 100644 Habitica/res/drawable-night-mdpi/challenge_won_gem_confetti.png create mode 100644 Habitica/res/drawable-night-xhdpi/challenge_won_gem_confetti.png create mode 100644 Habitica/res/drawable-night-xxhdpi/challenge_won_gem_confetti.png create mode 100644 Habitica/res/drawable-night-xxxhdpi/challenge_won_gem_confetti.png create mode 100644 Habitica/res/drawable-night-xxxhdpi/won_challenge_icon.png create mode 100644 Habitica/res/layout/dialog_hatch_pet_button.xml diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 57106fc31..a93426315 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -150,7 +150,7 @@ android { buildConfigField "String", "TESTING_LEVEL", "\"production\"" 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 2647 + versionCode 2653 versionName "3.1" } diff --git a/Habitica/res/drawable-night-hdpi/challenge_won_gem_confetti.png b/Habitica/res/drawable-night-hdpi/challenge_won_gem_confetti.png new file mode 100644 index 0000000000000000000000000000000000000000..6eff5110937ed528dcf7741cb092ce8c4c65615a GIT binary patch literal 6961 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-night-mdpi/challenge_won_gem_confetti.png b/Habitica/res/drawable-night-mdpi/challenge_won_gem_confetti.png new file mode 100644 index 0000000000000000000000000000000000000000..4e00ffce3d7d819d88aafcff89542bbb196beb48 GIT binary patch literal 3926 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-night-xhdpi/challenge_won_gem_confetti.png b/Habitica/res/drawable-night-xhdpi/challenge_won_gem_confetti.png new file mode 100644 index 0000000000000000000000000000000000000000..6573424b680bd3d781aef990214d182af12c1ec0 GIT binary patch literal 9954 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 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-night-xxhdpi/challenge_won_gem_confetti.png b/Habitica/res/drawable-night-xxhdpi/challenge_won_gem_confetti.png new file mode 100644 index 0000000000000000000000000000000000000000..1340361eadb52e3fe54dd24c08661dd5f7169102 GIT binary patch literal 16728 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 i_6qp(8 zZKdndat*jo#SAsvuwYZm)jB+_%LAVJ&|Y0sCOUaV)2%FPyUX(^Nvi>;guxyTiCOk5 zXL0z=ji~ZQ@?hubuvqglobJ$3UM}V0c&pbPx^RU(daSK)XxGCCj#2yR!J(a@REOv) z+KP|^q~kKTM~1xHGS^<5vKcT;i?=3Oo8xbRqng;S6ffON6u6WMPW)^?$YS*fGWm!z z#tYV{OH7)4%R0Vor1r6GrBvHXtoGSs)bo){M@q)q`;papyT*dp!2)Bun2@GcxJ`%} zIUy=@JNhfu8RoKZXg`ePlqh3yYB=2HbSF#oCJcuog#&Q82C=yiH}>cVJCcvB$t< z)xlSZO}kclWOHF}8V1KI-V@%t>nM#MQ!0dWsc+vpH743FjM>gxQtgTV4XYSLgo;5& zAyX%}^IF*7HR#hHdScJooHn%5V;2mRb;YNr)d=ln$$WLEWY?xMluo6s_X{5#^z?pc zetL>ilt>X-FD2bm@CZ1BxVpn4FL!1yRb z>;0X~d5Py!7|`fv>JMgLus;C03T=Ib+N~@b+AA8ZSMxl1BBBLmHXp(~+fy@6p+-jn zV(CuEPQN8$4%CegmZ~-!I`Osd>AcB@|HG;?asd0gf)}0NEb$Je$sq(m9EsexWL9`F zadI&wQYN=NGp~D37nN69REmA#@;Y(IR0;S9FBjJ3qLDIT zkeT+&rfm}$0bb9F{qqs=Rj8W%)=)tuZtd07h&gWU~!Rk{b!SeSn?nxS@udi=* zKqg1**QrUZm-plM^KaX5^DvNk;5Ka@*=j8>&AGSeN=h;FrY0t!l5ZF;5n#imITonI zh}By>v5o_A7fh8n(l8?3ItmmT;TplUrcW5_%tYTI;#DZWV{~SG|M>VgK1zWG%0707Y{;u#k5hYgOqWd~+2D)b7_hi$0tt*00@i#N)VG^0cFHZjp`kc|-~*anR8 zv4_XZ)~ipnLh_>bVXjZeNtWLXSPsT8`0IlIsPT4ts@YMCu}R-SF#yC)kwYOAT`@rH3kTx^Pv0)X(~x+}Gt;>o0}(Swob z&R6`mXI;N9A}Y!5>iGm2crkki;p#XJlrtJ)n7C4Xd(p|mFu`yW1teHupM~nhZ*bI2 z{esMGN&3W}7`1rv3N_rl#VrZ|r3eH+O%P#j1T%_{yaNANGgNNeerY1!K$r8KKPO8@9UDe^78U*k=KO*For?k z71(bcOdycF3TLyOl;mevK4+?ir6HQcWDJKrsyDvnp+ow^S^*q>&0eqWa>9|scvsV} z3WkQl#Je&zPK<~z=T~ybSJka5QmO9tRw6@SNh*>H8G~%YPAGJ z{;3-yp;1#`*Tx*uF`TRSFB_YDjRTPFmYR_8b_#U(8>Z=Z7@??C+Qc>jj z>jo7_<_-U~^Z6G9YM*}#fC>zR4%zk+k9pV{O@uKVAoP!V5^$+$q1h4v<3*+4!Gsw> z$LX2!oN$8BhlU2s5l?3EGpX^ypP%sSsS6Z%Nuz#A6;e~XGdwx8>oeE*Hk=J^mb-lI zLG_auP|XaU5tcWk`O5=^#32CY4OsWR%7xFbGEt!XaHvo`#q7e6F+2Ze4*fP!?WoL= w-RaKh-(g*ZhJ}HSxXL(VVg0trj-MdK@9_%s22Cu$Gk}m3l>?T(|M2<$0Dg%4p8x;= literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-night-xxxhdpi/challenge_won_gem_confetti.png b/Habitica/res/drawable-night-xxxhdpi/challenge_won_gem_confetti.png new file mode 100644 index 0000000000000000000000000000000000000000..6c66fb94518d7fa02881c69513f5e4a5dfe6f30d GIT binary patch literal 23800 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 E57QW$9RL6T literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-night-xxxhdpi/won_challenge_icon.png b/Habitica/res/drawable-night-xxxhdpi/won_challenge_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..92f26055e4574091b7d8a959e15499bf18e98660 GIT binary patch literal 2293 zcmb_eYitx%7#%`_inbUHf{!MXAsT9(o!9QXV9R5-w5v|7ZKXwMVRq(DJ9KwuIy2kd zZux=GU<|cjfJ6+E7*Z9I65|`8JVZrfOrxmC4`?LDih$w+1P$n&eYrK|5#nZN=gz(7 zp6`6;e)rBkQ&(GEGWnj#2!fPEYQpvK-r`+1PlCUPI+q`Ww_B{5MGk`8dZ%|yKwj7~ z9YH4T)f=1LX6aE;G2=d2HKV|nidztkAhYMBELrIQE*b@Gx)H>F-n|b)bv1}J1te0k zLZDr*N!y?yUE8RnI}}01=2W7yQz9gY16M{<@tEO=sUVi&6=B=!CNMMuaXW(8JTD;H zEY+bQ(*|h3$Knd*Cs9uDQ7q{XP!FLrNpS=jAV?M`DUswwnnH6Q3`Vn6O{@L+Za6dY3}N6Xwr;t)X`mjX95oYe z5Q9pyDa5S;t>NTsf`$<(*&-+(>7|qbs!9Q8CG1!xxT+8!2I9bQ9f+k0SgYN1O{d+w z0(D_{OaN%DBo$(et0f*UgmB!dE|^Bnka5vYW48r}df=D|TLD#FQ05FT8%qq?Kz2>L z(KKWEg{sR-MnfTVrX(x6;iXVsGy#NV7X&eyq)D8j;J1urew+-5B$iNX^zAFjK8*ihL19o7Nv1PRRXv_%13b-00p-Eyhdp}LvgHE_L)i& zYjg*$ad&PbHGs}sE2g8F;t^%V+Y~`e@u~r+Sgu(;P1N1qKf=0#8v27Zm`XPkmhJEIgU= zReK}SbG9h$ve5?M2}@u%p3L>tWme^Q$&A^8|6ekMcd%wFjQDTyWyXpQVYrZ)E_kwg z&B7}MJ``R`z<@s4@Rc)pTOxrV6OKi~^BPlI&K#qR_vhX|_wiXLZrgirpk%aWgIHD) zNd9*Jmb*9S&*$1B;9C@CU8ZNwB0sB{G0oH}T$`6v?HB?VM@+rRJ(&3BE9Xqz4ySTP;_{eB- z4D#&h-|u*@)u;Y(9T z>kRA?JNDJC%v5>sOx#4;^pmU|40;Zrgx3bT(Re!o{bAnf7QF>Bup)v z diff --git a/Habitica/res/layout/dialog_hatch_pet_button.xml b/Habitica/res/layout/dialog_hatch_pet_button.xml new file mode 100644 index 000000000..08a194429 --- /dev/null +++ b/Habitica/res/layout/dialog_hatch_pet_button.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/Habitica/res/layout/widget_avatar_stats.xml b/Habitica/res/layout/widget_avatar_stats.xml index c7aa396ed..b3caffceb 100644 --- a/Habitica/res/layout/widget_avatar_stats.xml +++ b/Habitica/res/layout/widget_avatar_stats.xml @@ -193,7 +193,7 @@ android:layout_height="wrap_content" android:gravity="center" android:textSize="14sp" - android:textColor="@color/textColorSecondaryDark" /> + android:textColor="?textColorSecondaryDark" /> @@ -226,7 +226,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" - android:textColor="@color/textColorSecondaryDark" + android:textColor="?textColorSecondaryDark" style="@style/CurrencyTextView" /> @@ -239,7 +239,7 @@ android:id="@+id/gold_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textColor="@color/textColorSecondaryDark" + android:textColor="?textColorSecondaryDark" style="@style/CurrencyTextView" /> diff --git a/Habitica/res/values/colors.xml b/Habitica/res/values/colors.xml index 0f6b6c80a..afc84de5c 100644 --- a/Habitica/res/values/colors.xml +++ b/Habitica/res/values/colors.xml @@ -72,11 +72,6 @@ @color/yellow_100 @color/blue_100 - @color/brand_300 - @color/brand_50 - - @color/brand_500 - #66000000 @color/text_ternary diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 63e467978..1fd53f09f 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -1125,7 +1125,7 @@ Hurray! You won a Challenge Congratulations! - %s selected you as the winner! Your win has been recorded in your Achievements. + %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/data/local/implementation/RealmUserLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt index 9491f28d4..5a2b168cf 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt @@ -138,6 +138,7 @@ override fun getUser(userID: String): Flowable { val habitClass = if (user.preferences?.disableClasses == true) "none" else user.stats?.habitClass return RxJavaBridge.toV3Flowable(realm.where(Skill::class.java) .equalTo("habitClass", habitClass) + .sort("lvl") .findAll() .asFlowable() .filter { it.isLoaded }) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaFirebaseMessagingService.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaFirebaseMessagingService.kt index d73dc9926..b9971cebe 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaFirebaseMessagingService.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaFirebaseMessagingService.kt @@ -5,6 +5,8 @@ import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage import com.habitrpg.android.habitica.HabiticaBaseApplication import com.habitrpg.android.habitica.components.UserComponent +import com.habitrpg.android.habitica.data.UserRepository +import com.habitrpg.android.habitica.helpers.RxErrorHandler import javax.inject.Inject class HabiticaFirebaseMessagingService : FirebaseMessagingService() { @@ -15,10 +17,17 @@ class HabiticaFirebaseMessagingService : FirebaseMessagingService() { @Inject internal lateinit var pushNotificationManager: PushNotificationManager + @Inject + internal lateinit var userRepository: UserRepository + override fun onMessageReceived(remoteMessage: RemoteMessage) { userComponent?.inject(this) if (this::pushNotificationManager.isInitialized) { pushNotificationManager.displayNotification(remoteMessage) + + if (remoteMessage.data["identifier"]?.contains(PushNotificationManager.WON_CHALLENGE_PUSH_NOTIFICATION_KEY) == true) { + userRepository.retrieveUser(true).subscribe({}, RxErrorHandler.handleEmptyError()) + } } } 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 0303757a8..4846ba925 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 @@ -47,6 +47,7 @@ import com.habitrpg.android.habitica.models.Notification import com.habitrpg.android.habitica.models.TutorialStep import com.habitrpg.android.habitica.models.inventory.Egg import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.notifications.ChallengeWonData import com.habitrpg.android.habitica.models.notifications.LoginIncentiveData import com.habitrpg.android.habitica.models.responses.MaintenanceResponse import com.habitrpg.android.habitica.models.responses.TaskScoringResult @@ -76,6 +77,10 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.functions.Consumer import io.reactivex.rxjava3.schedulers.Schedulers import io.realm.kotlin.isValid +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import java.util.* @@ -377,6 +382,23 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction { if (binding.toolbarTitle.text?.isNotBlank() != true) { navigationController.currentDestination?.let { updateToolbarTitle(it, null) } } + + val alert1 = HabiticaAlertDialog(this) + alert1.setTitle("1") + alert1.addCloseButton() + alert1.enqueue() + val alert2 = HabiticaAlertDialog(this) + alert2.setTitle("2") + alert2.addCloseButton() + alert2.enqueue() + GlobalScope.launch(context = Dispatchers.Main) { + delay(500L) + val alert3 = HabiticaAlertDialog(this@MainActivity) + alert3.setTitle("3") + alert3.addCloseButton() + alert3.enqueue() + } + } override fun onPause() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt index c3685c80a..700dde378 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt @@ -180,7 +180,7 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { val animal = this.animal if (animal != null) { val color = if (animal.type == "special") animal.color else null - if (animal.numberOwned > 0 || ownedEggs?.containsKey(animal.animal) == true) { + if (animal.numberOwned > 0) { if (itemType == "pets") { MainNavigationController.navigate(StableFragmentDirections.openPetDetail(animal.animal, animal.type ?: "", color)) } else { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt index c03c274d2..4d3f1faf9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt @@ -290,7 +290,7 @@ open class TaskRecyclerViewFragment : BaseFragment + taskRepository.getTasksForChallenge(task.challengeID).firstElement().subscribe({ tasks -> val taskCount = tasks.size val dialog = HabiticaAlertDialog(it) dialog.setTitle(R.string.broken_challenge) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt index 061bf6205..ac5ceca28 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt @@ -13,8 +13,14 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.extensions.dpToPx import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.extensions.layoutInflater +import com.habitrpg.android.habitica.helpers.MainNavigationController +import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengesOverviewFragmentDirections import com.habitrpg.android.habitica.ui.views.login.LockableScrollView import com.plattysoft.leonids.ParticleSystem +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import java.lang.ref.WeakReference @@ -269,8 +275,11 @@ open class HabiticaAlertDialog(context: Context) : AlertDialog(context, R.style. dialogQueue.removeAt(0) } if (dialogQueue.size > 0) { - if ((dialogQueue[0].context as? Activity)?.isFinishing == false) { - dialogQueue[0].show() + if ((dialogQueue[0].context as? Activity)?.isFinishing != true) { + GlobalScope.launch(context = Dispatchers.Main) { + delay(500L) + dialogQueue[0].show() + } } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt index 48b81a10b..5a0175070 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt @@ -4,12 +4,15 @@ import android.content.Context import android.graphics.drawable.BitmapDrawable import android.view.LayoutInflater import android.view.View +import android.widget.Button import android.widget.LinearLayout import android.widget.TextView import androidx.core.content.ContextCompat import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.DialogPetSuggestHatchBinding import com.habitrpg.android.habitica.extensions.dpToPx +import com.habitrpg.android.habitica.extensions.getThemeColor +import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.inventory.Animal import com.habitrpg.android.habitica.models.inventory.Egg @@ -109,18 +112,11 @@ class PetSuggestHatchDialog(context: Context) : HabiticaAlertDialog(context) { addButton(R.string.close, true) if (hatchPrice > 0) { - val linearLayout = LinearLayout(context) - val label = TextView(context) - label.setText(R.string.hatch) - label.setTextColor(ContextCompat.getColor(context, R.color.colorPrimary)) - linearLayout.addView(label) - val layoutParams: LinearLayout.LayoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, - LinearLayout.LayoutParams.WRAP_CONTENT) - layoutParams.setMargins(0, 0, 4.dpToPx(context), 0) - label.layoutParams = layoutParams - val priceView = CurrencyView(context, "gems", true) - priceView.value = hatchPrice.toDouble() - linearLayout.addView(priceView) + val linearLayout = layoutInflater.inflate(R.layout.dialog_hatch_pet_button, null) as? LinearLayout ?: return + + val priceView = linearLayout.findViewById(R.id.currencyView) + priceView?.value = hatchPrice.toDouble() + priceView?.currency = "gems" addButton(linearLayout, true) { _, _ -> val activity = (getActivity() as? MainActivity) ?: return@addButton val thisPotion = potion ?: return@addButton 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 5f262a179..b69442ce6 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 @@ -13,6 +13,9 @@ import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils class WonChallengeDialog(context: Context) : HabiticaAlertDialog(context) { fun configure(data: ChallengeWonData?) { + val imageView = additionalContentView?.findViewById(R.id.achievement_view); + DataBindingUtils.loadImage(imageView, "achievement-karaoke-2x") + if (data?.name != null) { additionalContentView?.findViewById(R.id.description_view)?.text = context.getString(R.string.won_achievement_description, data.name).fromHtml() } @@ -30,9 +33,6 @@ class WonChallengeDialog(context: Context) : HabiticaAlertDialog(context) { 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.achievement_view), "achievement-karaoke2x") - setAdditionalContentView(view) } } diff --git a/Habitica/staff/release/output-metadata.json b/Habitica/staff/release/output-metadata.json index e7456f95f..a053a10b5 100644 --- a/Habitica/staff/release/output-metadata.json +++ b/Habitica/staff/release/output-metadata.json @@ -10,7 +10,7 @@ { "type": "SINGLE", "filters": [], - "versionCode": 2644, + "versionCode": 2650, "versionName": "3.1", "outputFile": "Habitica-staff-release.apk" }