diff --git a/Habitica/build.gradle b/Habitica/build.gradle
index 8989e59cd..364442ed4 100644
--- a/Habitica/build.gradle
+++ b/Habitica/build.gradle
@@ -126,10 +126,10 @@ dependencies {
implementation 'com.nex3z:flow-layout:1.2.2'
implementation 'androidx.core:core-ktx:1.1.0'
- implementation "androidx.lifecycle:lifecycle-extensions:2.1.0"
- implementation "androidx.lifecycle:lifecycle-common-java8:2.1.0"
- implementation 'androidx.navigation:navigation-fragment-ktx:2.1.0'
- implementation 'androidx.navigation:navigation-ui-ktx:2.1.0'
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0"
+ implementation 'androidx.navigation:navigation-fragment-ktx:2.2.1'
+ implementation 'androidx.navigation:navigation-ui-ktx:2.2.1'
implementation "androidx.paging:paging-runtime-ktx:2.1.1"
implementation 'com.plattysoft.leonids:LeonidsLib:1.3.2'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3'
diff --git a/Habitica/res/drawable/button_background_gray_600.xml b/Habitica/res/drawable/button_background_gray_600.xml
new file mode 100644
index 000000000..9d6ccf7a2
--- /dev/null
+++ b/Habitica/res/drawable/button_background_gray_600.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 9145c73e2..b4b759143 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -336,9 +336,11 @@
You don\'t have any messages. You can send a user a new message from their public chat messages!
Unlock by inviting friends
Unlock by logging into Habitica regularly
+ Unlock by checking into Habitica %d times.
Unlock by creating an account
Invite Friends
login into Habitica regularly
+ %d Checkins
create an account
Purchased %1$s
gold
@@ -946,6 +948,8 @@
Guidance with setting up your Habitica Account
Skill unlocks at level %d
Locked
- Finish Quest %d
- Level %d
+ Unlock by finishing Quest %d
+ Unlock by reaching level %d
+ Finish Quest %d
+ Level %d
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 999b8a208..1c3c38e18 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
@@ -90,7 +90,27 @@ open class ShopItem : RealmObject() {
fun lockedReason(context: Context): String? {
return when {
unlockCondition != null -> {
- unlockCondition?.shortReadableUnlockConditionId()?.let { context.getString(it) }
+ unlockCondition?.readableUnlockCondition(context)
+ }
+ previous != null -> {
+ try {
+ val thisNumber = Character.getNumericValue(key.last())
+ context.getString(R.string.unlock_previous_short, thisNumber - 1)
+ } catch (e: NumberFormatException) {
+ null
+ }
+ }
+ level != null -> {
+ context.getString(R.string.unlock_level_short, level ?: 0)
+ }
+ else -> null
+ }
+ }
+
+ fun shortLockedReason(context: Context): String? {
+ return when {
+ unlockCondition != null -> {
+ unlockCondition?.shortReadableUnlockCondition(context)
}
previous != null -> {
try {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt
index 245f359e9..bc79daefb 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt
@@ -1,5 +1,6 @@
package com.habitrpg.android.habitica.models.shops
+import android.content.Context
import com.habitrpg.android.habitica.R
import io.realm.RealmObject
@@ -10,18 +11,19 @@ open class ShopItemUnlockCondition : RealmObject() {
@PrimaryKey
var questKey: String? = null
private var condition: String? = null
+ var incentiveThreshold: Int? = null
- fun readableUnlockConditionId(): Int = when (this.condition) {
- "party invite" -> R.string.party_invite
- "login incentive" -> R.string.login_incentive
- "create account" -> R.string.create_account
- else -> R.string.empty
+ fun readableUnlockCondition(context: Context): String = when (this.condition) {
+ "party invite" -> context.getString(R.string.party_invite)
+ "login reward" -> if (incentiveThreshold != null) context.getString(R.string.login_incentive_count, incentiveThreshold) else context.getString(R.string.login_incentive)
+ "create account" -> context.getString(R.string.create_account)
+ else -> ""
}
- fun shortReadableUnlockConditionId(): Int = when (this.condition) {
- "party invite" -> R.string.party_invite_short
- "login incentive" -> R.string.login_incentive_short
- "create account" -> R.string.create_account_short
- else -> R.string.empty
+ fun shortReadableUnlockCondition(context: Context): String = when (this.condition) {
+ "party invite" -> context.getString(R.string.party_invite_short)
+ "login reward" -> if (incentiveThreshold != null) context.getString(R.string.login_incentive_short_count, incentiveThreshold) else context.getString(R.string.login_incentive_short)
+ "create account" -> context.getString(R.string.create_account_short)
+ else -> ""
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ShopItemViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ShopItemViewHolder.kt
index d5b682d8a..a45a47c13 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ShopItemViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ShopItemViewHolder.kt
@@ -67,7 +67,7 @@ class ShopItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), Vi
itemDetailIndicator.text = null
itemDetailIndicator.visibility = View.GONE
- val lockedReason = item.lockedReason(context)
+ val lockedReason = item.shortLockedReason(context)
if (!item.locked) {
priceLabel.text = item.value.toString()
priceLabel.currency = item.currency
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 ce53fadaa..6f62e28ac 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
@@ -7,6 +7,7 @@ import android.view.View
import android.widget.Button
import android.widget.TextView
import androidx.core.content.ContextCompat
+import androidx.core.graphics.drawable.toDrawable
import androidx.core.os.bundleOf
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.UserComponent
@@ -82,6 +83,8 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop
setBuyButtonEnabled(false)
buyLabel.text = context.getString(R.string.locked)
limitedTextView.visibility = View.VISIBLE
+ limitedTextView.background = ContextCompat.getColor(context, R.color.gray_600).toDrawable()
+ limitedTextView.setTextColor(ContextCompat.getColor(context, R.color.gray_100))
}
priceLabel.isLocked = shopItem.locked || shopItem.lockedReason(context) != null
@@ -186,9 +189,9 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop
priceLabel.setTextColor(ContextCompat.getColor(context, R.color.white))
buyLabel.setTextColor(ContextCompat.getColor(context, R.color.white))
} else {
- buyButton.background = context.getDrawable(R.drawable.button_background_gray_700)
- priceLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_200))
- buyLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_200))
+ buyButton.background = context.getDrawable(R.drawable.button_background_gray_600)
+ priceLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_100))
+ buyLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_100))
}
if (shopItem.isTypeGear) {