diff --git a/Habitica/res/drawable/subscriber_benefit_snackbar_bg.xml b/Habitica/res/drawable/subscriber_benefit_snackbar_bg.xml
new file mode 100644
index 000000000..2c2745de8
--- /dev/null
+++ b/Habitica/res/drawable/subscriber_benefit_snackbar_bg.xml
@@ -0,0 +1,16 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
diff --git a/Habitica/res/layout/activity_armoire.xml b/Habitica/res/layout/activity_armoire.xml
index a5bfd916d..2ab5f53a0 100644
--- a/Habitica/res/layout/activity_armoire.xml
+++ b/Habitica/res/layout/activity_armoire.xml
@@ -1,264 +1,298 @@
-
-
-
+ android:layout_height="match_parent">
+
+
+
-
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical">
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_height="65dp"
+ android:paddingStart="24dp"
+ android:paddingEnd="18dp">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+ android:layout_marginTop="5dp"
+ android:layout_marginBottom="@dimen/spacing_medium"
+ android:alpha="0.75"
+ android:text="@string/armoire_drop_rates"
+ android:textColor="@color/teal_1" />
+
-
-
-
+ android:textColor="@color/brand_600" />
-
-
diff --git a/common/src/main/res/layout/fragment_report_message.xml b/Habitica/res/layout/fragment_report_message.xml
similarity index 100%
rename from common/src/main/res/layout/fragment_report_message.xml
rename to Habitica/res/layout/fragment_report_message.xml
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt
index e992c93da..7e18422f3 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt
@@ -7,6 +7,7 @@ import android.view.View
import android.view.animation.AccelerateInterpolator
import android.widget.FrameLayout
import android.widget.RelativeLayout
+import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
@@ -27,6 +28,7 @@ import com.habitrpg.android.habitica.ui.fragments.purchases.SubscriptionBottomSh
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
import com.habitrpg.android.habitica.ui.views.ads.AdButton
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaBottomSheetDialog
+import com.habitrpg.android.habitica.ui.views.progress.HabiticaCircularProgressView
import com.habitrpg.common.habitica.extensions.dpToPx
import com.habitrpg.common.habitica.extensions.loadImage
import com.habitrpg.common.habitica.helpers.Animations
@@ -90,6 +92,10 @@ class ArmoireActivity : BaseActivity() {
}
}
+ binding.progressView.setContent {
+ HabiticaCircularProgressView(indicatorSize = 60.dp)
+ }
+
if (appConfigManager.enableArmoireAds()) {
val handler = AdHandler(this, AdType.ARMOIRE) {
if (!it) {
@@ -181,6 +187,11 @@ class ArmoireActivity : BaseActivity() {
binding.iconView.bitmap = null
Animations.circularHide(binding.iconWrapper)
}
+ binding.progressView.animate().apply {
+ alpha(1f)
+ startDelay = 0
+ start()
+ }
binding.titleView.animate().apply {
alpha(0f)
duration = 300
@@ -244,6 +255,12 @@ class ArmoireActivity : BaseActivity() {
binding.goldView.value = (gold).toDouble()
}
+ binding.progressView.animate().apply {
+ alpha(0f)
+ startDelay = 0
+ start()
+ }
+
val container = binding.confettiAnchor
container.postDelayed(
{
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt
index cb5bd1709..80da33669 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt
@@ -148,7 +148,7 @@ class DeathActivity : BaseActivity(), SnackbarActivity {
delay(1000)
(HabiticaBaseApplication.getInstance(this@DeathActivity)?.currentActivity?.get() as? SnackbarActivity)?.let {activity ->
HabiticaSnackbar.showSnackbar(
- activity.snackbarContainer(), getString(R.string.subscriber_benefit_success_faint), HabiticaSnackbar.SnackbarDisplayType.SUCCESS, isSubscriberBenefit = true)
+ activity.snackbarContainer(), getString(R.string.subscriber_benefit_success_faint), HabiticaSnackbar.SnackbarDisplayType.SUBSCRIBER_BENEFIT, isSubscriberBenefit = true, duration = 2500)
}
}
finish()
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/ReportBottomSheetFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/ReportBottomSheetFragment.kt
index cdb84be94..9c413fc4f 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/ReportBottomSheetFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/ReportBottomSheetFragment.kt
@@ -13,7 +13,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.data.SocialRepository
-import com.habitrpg.common.habitica.databinding.FragmentReportMessageBinding
+import com.habitrpg.android.habitica.databinding.FragmentReportMessageBinding
import com.habitrpg.common.habitica.helpers.ExceptionHandler
import com.habitrpg.common.habitica.helpers.launchCatching
import com.habitrpg.common.habitica.helpers.setMarkdown
@@ -180,4 +180,3 @@ class ReportBottomSheetFragment : BottomSheetDialogFragment() {
}
}
}
-
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.kt
index 955f44cb3..d479f8438 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.kt
@@ -112,7 +112,7 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
}
enum class SnackbarDisplayType {
- NORMAL, FAILURE, FAILURE_BLUE, DROP, SUCCESS, BLUE, BLACK
+ NORMAL, FAILURE, FAILURE_BLUE, DROP, SUCCESS, BLUE, BLACK, SUBSCRIBER_BENEFIT
}
companion object {
@@ -133,7 +133,8 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
content: CharSequence?,
displayType: SnackbarDisplayType,
isCelebratory: Boolean = false,
- isSubscriberBenefit: Boolean = false
+ isSubscriberBenefit: Boolean = false,
+ duration: Int = Snackbar.LENGTH_LONG
) {
showSnackbar(
container,
@@ -146,7 +147,8 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
null,
displayType,
isCelebratory,
- isSubscriberBenefit
+ isSubscriberBenefit,
+ duration
)
}
@@ -157,7 +159,8 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
content: CharSequence?,
displayType: SnackbarDisplayType,
isCelebratory: Boolean = false,
- isSubscriberBenefit: Boolean = false
+ isSubscriberBenefit: Boolean = false,
+ duration: Int = Snackbar.LENGTH_LONG
) {
showSnackbar(
container,
@@ -170,7 +173,8 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
null,
displayType,
isCelebratory,
- isSubscriberBenefit
+ isSubscriberBenefit,
+ duration
)
}
@@ -183,7 +187,8 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
rightText: String,
displayType: SnackbarDisplayType,
isCelebratory: Boolean = false,
- isSubscriberBenefit: Boolean = false
+ isSubscriberBenefit: Boolean = false,
+ duration: Int = Snackbar.LENGTH_LONG
) {
showSnackbar(
container,
@@ -196,7 +201,8 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
rightText,
displayType,
isCelebratory,
- isSubscriberBenefit
+ isSubscriberBenefit,
+ duration
)
}
@@ -207,7 +213,8 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
specialView: View?,
displayType: SnackbarDisplayType,
isCelebratory: Boolean = false,
- isSubscriberBenefit: Boolean = false
+ isSubscriberBenefit: Boolean = false,
+ duration: Int = Snackbar.LENGTH_LONG
) {
showSnackbar(
container,
@@ -220,7 +227,8 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
null,
displayType,
isCelebratory,
- isSubscriberBenefit
+ isSubscriberBenefit,
+ duration
)
}
@@ -235,9 +243,10 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
rightText: String?,
displayType: SnackbarDisplayType,
isCelebratory: Boolean = false,
- isSubscriberBenefit: Boolean = false
+ isSubscriberBenefit: Boolean = false,
+ duration: Int = Snackbar.LENGTH_LONG
) {
- val snackbar = make(container, Snackbar.LENGTH_LONG)
+ val snackbar = make(container, duration)
.setTitle(title)
.setText(content)
.setSpecialView(specialView)
@@ -258,6 +267,9 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
)
SnackbarDisplayType.SUCCESS -> snackbar.setBackgroundResource(R.drawable.snackbar_background_green)
+ SnackbarDisplayType.SUBSCRIBER_BENEFIT -> {
+ snackbar.setBackgroundResource(R.drawable.subscriber_benefit_snackbar_bg)
+ }
}
if (isCelebratory) {
@@ -284,7 +296,7 @@ private constructor(parent: ViewGroup, content: View, callback: ContentViewCallb
500L
)
.setFadeOut(200L)
- .setSpeedRange(0.1f, 0.4f)
+ .setSpeedRange(0.05f, 0.2f)
.setScaleRange(0.8f, 1.2f)
.setRotationSpeedRange(134f, 164f)
.emit(snackbar.getView(), 150, 500)
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt
index 34fcdf43e..fc1cb3262 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt
@@ -37,6 +37,7 @@ import com.habitrpg.android.habitica.ui.views.CurrencyViews
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
import com.habitrpg.android.habitica.ui.views.SnackbarActivity
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
+import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGemsDialog
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGoldDialog
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientHourglassesDialog
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientSubscriberGemsDialog
diff --git a/version.properties b/version.properties
index 647c06e3b..568f98dae 100644
--- a/version.properties
+++ b/version.properties
@@ -1,2 +1,2 @@
NAME=4.3
-CODE=6521
\ No newline at end of file
+CODE=6561
\ No newline at end of file