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