diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt index 22621153b..c0384d384 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt @@ -111,7 +111,6 @@ class MainNotificationsManager : NotificationsManager { Notification.Type.ACHIEVEMENT_GENERIC.type -> true Notification.Type.ACHIEVEMENT_ONBOARDING_COMPLETE.type -> true Notification.Type.LOGIN_INCENTIVE.type -> true - Notification.Type.NEW_MYSTERY_ITEMS.type -> true Notification.Type.FIRST_DROP.type -> true else -> false } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt index cf9f85ff7..db3a3300a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt @@ -74,6 +74,12 @@ open class ShopItem : RealmObject(), BaseObject { val isTypeItem: Boolean get() = "eggs" == purchaseType || "hatchingPotions" == purchaseType || "food" == purchaseType || "armoire" == purchaseType || "potion" == purchaseType || "debuffPotion" == purchaseType || "fortify" == purchaseType + val isTypeSpecial: Boolean + get() = "special" == purchaseType + + val isTypeBundle: Boolean + get() = "bundles" == purchaseType + val isTypeQuest: Boolean get() = "quests" == purchaseType diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/ComposeAvatarEquipmentFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/ComposeAvatarEquipmentFragment.kt index e331ca2ec..1b687b2b6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/ComposeAvatarEquipmentFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/ComposeAvatarEquipmentFragment.kt @@ -137,7 +137,7 @@ class ComposeAvatarEquipmentFragment : inventoryRepository.equip( if (userViewModel.user.value?.preferences?.costume == true) "costume" else "equipped", activeEquipment ?: "") - } else { + } else if (equipment.key?.contains("base_0") == false) { inventoryRepository.equip( if (userViewModel.user.value?.preferences?.costume == true) "costume" else "equipped", equipment.key ?: "", 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 3ce63a568..18fb86465 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 @@ -112,7 +112,7 @@ class PurchaseDialog( val contentView: PurchaseDialogContent when { - shopItem.isTypeItem -> contentView = PurchaseDialogItemContent(context) + shopItem.isTypeItem || shopItem.isTypeSpecial || shopItem.isTypeBundle -> contentView = PurchaseDialogItemContent(context) shopItem.isTypeQuest -> { contentView = PurchaseDialogQuestContent(context) MainScope().launch(ExceptionHandler.coroutine()) { diff --git a/common/src/main/java/com/habitrpg/common/habitica/helpers/MarkdownParser.kt b/common/src/main/java/com/habitrpg/common/habitica/helpers/MarkdownParser.kt index e9fd8a5b7..fe4acac40 100644 --- a/common/src/main/java/com/habitrpg/common/habitica/helpers/MarkdownParser.kt +++ b/common/src/main/java/com/habitrpg/common/habitica/helpers/MarkdownParser.kt @@ -125,6 +125,7 @@ object MarkdownParser { private fun processMarkdown(input: String): String { var processedInput = preprocessMarkdownLinks(input) processedInput = preprocessImageMarkdown(processedInput) + processedInput = preprocessHtmlTags(processedInput) return processedInput } @@ -154,7 +155,7 @@ object MarkdownParser { while (matcher.find()) { val linkText = matcher.group(1) val url = matcher.group(2) - val sanitizedUrl = url.replace(Regex("\\s"), "") + val sanitizedUrl = url?.replace(Regex("\\s"), "") val correctedLink = "[$linkText]($sanitizedUrl)" matcher.appendReplacement(sb, Matcher.quoteReplacement(correctedLink)) } @@ -163,6 +164,13 @@ object MarkdownParser { return sb.toString() } + val brRegex = Regex("
") + private fun preprocessHtmlTags(markdown: String): String { + return markdown.replace(brRegex) { + "\n" + } + } + fun parseMarkdownAsync( input: String?, onSuccess: (Spanned) -> Unit, diff --git a/version.properties b/version.properties index 0da63a13d..a9bd5f627 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ NAME=4.4 -CODE=7961 \ No newline at end of file +CODE=7981 \ No newline at end of file