diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 34c01837e..1e388513d 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -162,7 +162,7 @@ android { multiDexEnabled true 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 2482 + versionCode 2485 versionName "2.7.1" } diff --git a/Habitica/res/drawable/layout_rounded_bg_header_bar.xml b/Habitica/res/drawable/layout_rounded_bg_header_bar.xml new file mode 100644 index 000000000..3ab4bfac4 --- /dev/null +++ b/Habitica/res/drawable/layout_rounded_bg_header_bar.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Habitica/res/layout/avatar_with_bars.xml b/Habitica/res/layout/avatar_with_bars.xml index 3ffc4ea80..0e4e80d96 100644 --- a/Habitica/res/layout/avatar_with_bars.xml +++ b/Habitica/res/layout/avatar_with_bars.xml @@ -24,7 +24,7 @@ android:layout_width="@dimen/avatar_header_width" android:layout_height="@dimen/avatar_header_height" android:layout_gravity="center_vertical" - android:layout_marginEnd="32dp" + android:layout_marginEnd="20dp" android:contentDescription="@string/sidebar_avatar" app:showBackground="true" app:showMount="true" diff --git a/Habitica/res/layout/value_bar.xml b/Habitica/res/layout/value_bar.xml index d40b87df9..dbc7eada3 100644 --- a/Habitica/res/layout/value_bar.xml +++ b/Habitica/res/layout/value_bar.xml @@ -4,7 +4,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="@dimen/bar_padding" android:orientation="horizontal"> 81dp 99dp 124dp - 6dp + 4dp 16dp - 3dp + 9dp 13dp 4dp diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt index fc98d19c1..7ef1162ca 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt @@ -76,6 +76,9 @@ interface ApiService { @POST("user/buy-quest/{key}") fun purchaseQuest(@Path("key") key: String): Flowable> + @POST("user/buy-special-spell/{key}") + fun purchaseSpecialSpell(@Path("key") key: String): Flowable> + @POST("user/sell/{type}/{key}") fun sellItem(@Path("type") itemType: String, @Path("key") itemKey: String): Flowable> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt index f0437e8b6..3ed6fccbe 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt @@ -61,6 +61,7 @@ interface ApiClient { fun purchaseMysterySet(itemKey: String): Flowable fun purchaseQuest(key: String): Flowable + fun purchaseSpecialSpell(key: String): Flowable fun validateSubscription(request: SubscriptionValidationRequest): Flowable fun validateNoRenewSubscription(request: PurchaseValidationRequest): Flowable fun cancelSubscription(): Flowable diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt index e420d130a..38fc6aa0b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt @@ -70,6 +70,7 @@ interface InventoryRepository : BaseRepository { fun purchaseHourglassItem(purchaseType: String, key: String): Flowable fun purchaseQuest(key: String): Flowable + fun purchaseSpecialSpell(key: String): Flowable fun purchaseItem(purchaseType: String, key: String, purchaseQuantity: Int): Flowable diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt index ff647fe60..097fdbb91 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt @@ -370,6 +370,10 @@ class ApiClientImpl//private OnHabitsAPIResult mResultListener; return apiService.purchaseQuest(key).compose(configureApiCallObserver()) } + override fun purchaseSpecialSpell(key: String): Flowable { + return apiService.purchaseSpecialSpell(key).compose(configureApiCallObserver()) + } + override fun sellItem(itemType: String, itemKey: String): Flowable { return apiService.sellItem(itemType, itemKey).compose(configureApiCallObserver()) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt index 61774d2f2..121d987b1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt @@ -280,6 +280,10 @@ class InventoryRepositoryImpl(localRepository: InventoryLocalRepository, apiClie return apiClient.purchaseQuest(key) } + override fun purchaseSpecialSpell(key: String): Flowable { + return apiClient.purchaseSpecialSpell(key) + } + override fun purchaseItem(purchaseType: String, key: String, purchaseQuantity: Int): Flowable { return apiClient.purchaseItem(purchaseType, key, purchaseQuantity) } 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 4d96a3b6b..5e7fa29f4 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 @@ -57,7 +57,7 @@ open class ShopItem : RealmObject() { var level: Int? = null val isTypeItem: Boolean - get() = "eggs" == purchaseType || "hatchingPotions" == purchaseType || "food" == purchaseType || "armoire" == purchaseType || "potion" == purchaseType + get() = "eggs" == purchaseType || "hatchingPotions" == purchaseType || "food" == purchaseType || "armoire" == purchaseType || "potion" == purchaseType || "debuffPotion" == purchaseType val isTypeQuest: Boolean get() = "quests" == purchaseType diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ValueBar.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ValueBar.kt index 69b8ece01..2e374aaab 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ValueBar.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ValueBar.kt @@ -143,7 +143,7 @@ class ValueBar(context: Context, attrs: AttributeSet?) : FrameLayout(context, at progressBar.setBackgroundResource(R.drawable.layout_rounded_bg_light_gray) } else { textColor = context.getThemeColor(R.attr.textColorPrimaryDark) - progressBar.setBackgroundResource(R.drawable.layout_rounded_bg_primary) + progressBar.setBackgroundResource(R.drawable.layout_rounded_bg_header_bar) } valueTextView.setTextColor(textColor) descriptionTextView.setTextColor(textColor) 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 61d53a093..265883d0b 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 @@ -299,6 +299,8 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop } } else if (shopItem.purchaseType == "quests" && shopItem.currency == "gold") { observable = inventoryRepository.purchaseQuest(shopItem.key) + } else if (shopItem.purchaseType == "debuffPotion") { + observable = inventoryRepository.purchaseSpecialSpell(shopItem.key) } else if (shopItem.purchaseType == "card") { purchaseCardAction?.invoke(shopItem) dismiss()