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()