diff --git a/Habitica/res/layout/widget_avatar_stats.xml b/Habitica/res/layout/widget_avatar_stats.xml
index 395f0e12f..2652d6db8 100644
--- a/Habitica/res/layout/widget_avatar_stats.xml
+++ b/Habitica/res/layout/widget_avatar_stats.xml
@@ -20,12 +20,11 @@
android:gravity="center_vertical">
-
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 5873482a7..3097d5c97 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -1472,6 +1472,8 @@
SUBSCRIBER BENEFIT
You don\'t have any Saddles
Saddles instantly raise a Pet to a Mount. You can purchase one from the Market.
+ Error Loading Member
+ There was an error when loading this members data. Please try again later.
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt
index 291f73af7..b510b5200 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt
@@ -61,6 +61,11 @@ class RealmInventoryLocalRepository(realm: Realm) :
return realm.where(Equipment::class.java)
.equalTo("klass", "armoire")
.beginGroup()
+ .equalTo("released", true)
+ .or()
+ .isNull("released")
+ .endGroup()
+ .beginGroup()
.equalTo("owned", false)
.or()
.isNull("owned")
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt
index 47025b88b..af27a2d88 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt
@@ -21,6 +21,7 @@ open class Equipment : RealmObject(), BaseMainObject {
var con: Int = 0
var str: Int = 0
var per: Int = 0
+ var released: Boolean = true
@SerializedName("int")
var _int: Int = 0
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftSubscriptionActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftSubscriptionActivity.kt
index d00737a17..a0ca9f17e 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftSubscriptionActivity.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftSubscriptionActivity.kt
@@ -9,9 +9,11 @@ import com.android.billingclient.api.ProductDetails
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.data.SocialRepository
import com.habitrpg.android.habitica.databinding.ActivityGiftSubscriptionBinding
+import com.habitrpg.android.habitica.extensions.addCloseButton
import com.habitrpg.android.habitica.helpers.AppConfigManager
import com.habitrpg.android.habitica.helpers.PurchaseHandler
import com.habitrpg.android.habitica.helpers.PurchaseTypes
+import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
import com.habitrpg.android.habitica.ui.views.subscriptions.SubscriptionOptionView
import com.habitrpg.common.habitica.helpers.ExceptionHandler
import dagger.hilt.android.AndroidEntryPoint
@@ -62,8 +64,10 @@ class GiftSubscriptionActivity : PurchaseActivity() {
giftedUserID = intent.getStringExtra("userID")
giftedUsername = intent.getStringExtra("username")
- if (giftedUserID == null && giftedUsername == null) {
+ if (giftedUserID.isNullOrBlank()) {
giftedUserID = navArgs().value.userID
+ }
+ if (giftedUsername.isNullOrBlank()) {
giftedUsername = navArgs().value.username
}
@@ -71,7 +75,15 @@ class GiftSubscriptionActivity : PurchaseActivity() {
selectedSubscriptionSku?.let { sku -> purchaseSubscription(sku) }
}
lifecycleScope.launch(ExceptionHandler.coroutine()) {
- val member = socialRepository.retrieveMember(giftedUsername ?: giftedUserID) ?: return@launch
+ val member = socialRepository.retrieveMember(giftedUsername ?: giftedUserID)
+ if (member == null) {
+ val dialog = HabiticaAlertDialog(this@GiftSubscriptionActivity)
+ dialog.setTitle(R.string.error_loading_member)
+ dialog.setMessage(R.string.error_loading_member_body)
+ dialog.addCloseButton { _, _ -> finish() }
+ dialog.show()
+ return@launch
+ }
binding.avatarView.setAvatar(member)
binding.displayNameTextView.username = member.profile?.name
binding.displayNameTextView.tier = member.contributor?.level ?: 0
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.kt
index f736f4e8c..d4b032a97 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.kt
@@ -45,8 +45,6 @@ class AvatarStatsWidgetProvider : BaseWidgetProvider() {
showMount = true,
showPet = true
)
- val layoutParams = ViewGroup.LayoutParams(140.dpToPx(context), 147.dpToPx(context))
- avatarView.layoutParams = layoutParams
MainScope().launchCatching {
userRepository.getUser().collect {
@@ -69,8 +67,6 @@ class AvatarStatsWidgetProvider : BaseWidgetProvider() {
showMount = true,
showPet = true
)
- val layoutParams = ViewGroup.LayoutParams(140.dpToPx(context), 147.dpToPx(context))
- avatarView.layoutParams = layoutParams
}
this.appWidgetManager = appWidgetManager
this.context = context