From fb4ab4203dd15ba52eb39acc512c9ed37f44fa70 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 30 Jul 2020 12:44:01 +0200 Subject: [PATCH] Fix stable display issues --- Habitica/build.gradle | 2 +- Habitica/res/color/task_form_box_stroke.xml | 7 ++++ Habitica/res/drawable/pill_bg_gray.xml | 2 +- Habitica/res/layout/activity_task_form.xml | 7 ++-- .../layout/customization_section_header.xml | 5 +-- .../res/layout/dialog_pet_suggest_hatch.xml | 2 +- Habitica/res/layout/pet_detail_item.xml | 11 ++++-- Habitica/res/layout/pet_overview_item.xml | 14 +++++--- Habitica/res/values/strings.xml | 2 ++ Habitica/res/values/styles.xml | 14 +++++--- .../habitica/extensions/Animal-Extensions.kt | 14 ++++---- .../ui/activities/TaskFormActivity.kt | 16 ++++++--- .../inventory/MountDetailRecyclerAdapter.kt | 2 +- .../inventory/StableRecyclerAdapter.kt | 14 ++++++-- .../stable/MountDetailRecyclerFragment.kt | 3 +- .../stable/PetDetailRecyclerFragment.kt | 21 +++++------ .../stable/StableRecyclerFragment.kt | 11 +++++- .../habitica/ui/viewHolders/PetViewHolder.kt | 4 +-- .../habitica/ui/views/shops/PurchaseDialog.kt | 35 ++++++++----------- .../tasks/form/HabitScoringButtonsView.kt | 5 +-- .../views/tasks/form/TaskDifficultyButtons.kt | 3 +- Habitica/staff/release/output.json | 4 +-- 22 files changed, 124 insertions(+), 74 deletions(-) create mode 100644 Habitica/res/color/task_form_box_stroke.xml diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 14317107a..2c05a47a1 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 2497 + versionCode 2500 versionName "2.8" } diff --git a/Habitica/res/color/task_form_box_stroke.xml b/Habitica/res/color/task_form_box_stroke.xml new file mode 100644 index 000000000..f8eaeebf9 --- /dev/null +++ b/Habitica/res/color/task_form_box_stroke.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Habitica/res/drawable/pill_bg_gray.xml b/Habitica/res/drawable/pill_bg_gray.xml index c5f636827..fc8626c84 100644 --- a/Habitica/res/drawable/pill_bg_gray.xml +++ b/Habitica/res/drawable/pill_bg_gray.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/Habitica/res/layout/activity_task_form.xml b/Habitica/res/layout/activity_task_form.xml index b0a33ddaa..ca908127c 100644 --- a/Habitica/res/layout/activity_task_form.xml +++ b/Habitica/res/layout/activity_task_form.xml @@ -17,7 +17,6 @@ android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:theme="@style/Toolbar" - android:background="@color/brand_300" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"/> @@ -47,7 +46,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/TaskFormTextInputLayoutAppearance" - app:boxStrokeColor="?attr/colorPrimaryDark" + app:boxStrokeColor="?attr/colorPrimary" + android:backgroundTint="?attr/colorPrimary" android:alpha="0.75"> + android:textColor="@color/gray_200"/> + - + + + android:layout_width="68dp" + android:layout_height="68dp" + android:layout_gravity="center" + app:actualImageScaleType="fitCenter" + /> + Keep %d Tasks Delete %d Tasks %s Challenge Task + %s Pets + %s Mounts diff --git a/Habitica/res/values/styles.xml b/Habitica/res/values/styles.xml index 974a440b9..f6e75cc06 100644 --- a/Habitica/res/values/styles.xml +++ b/Habitica/res/values/styles.xml @@ -273,7 +273,7 @@ @@ -387,6 +387,7 @@ @dimen/pill_horizontal_padding @dimen/pill_vertical_padding @dimen/pill_vertical_padding + @color/gray_200 @@ -649,9 +653,9 @@ @color/taskform_gray ?attr/colorPrimaryText @color/gray_300 - @color/gray_400 - @color/brand_400 - @color/brand_400 + ?attr/colorPrimary + ?attr/colorPrimary + ?attr/colorPrimary @color/brand_400 diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Animal-Extensions.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Animal-Extensions.kt index 102b47cc1..1f3b97fe7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Animal-Extensions.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Animal-Extensions.kt @@ -9,16 +9,14 @@ fun Animal.getTranslatedType(c: Context?): String { return type } - var currType: String = when (type) { - "drop" -> c?.getString(R.string.standard).toString() - "quest" -> c?.getString(R.string.quest).toString() - "wacky" -> c?.getString(R.string.wacky).toString() - "special" -> c?.getString(R.string.special).toString() - "premium" -> c?.getString(R.string.magic_potion).toString() + return when (type) { + "drop" -> c.getString(R.string.standard) + "quest" -> c.getString(R.string.quest) + "wacky" -> c.getString(R.string.wacky) + "special" -> c.getString(R.string.special) + "premium" -> c.getString(R.string.magic_potion) else -> { type } } - - return currType } \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt index 2f38a4f59..f2fe79897 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt @@ -118,12 +118,10 @@ class TaskFormActivity : BaseActivity() { private var tintColor: Int = 0 set(value) { field = value - upperTextWrapper.setBackgroundColor(value) taskDifficultyButtons.tintColor = value habitScoringButtons.tintColor = value habitResetStreakButtons.tintColor = value taskSchedulingControls.tintColor = value - supportActionBar?.setBackgroundDrawable(ColorDrawable(value)) updateTagViewsColors() } @@ -153,12 +151,22 @@ class TaskFormActivity : BaseActivity() { } else { "purple" } - super.onCreate(savedInstanceState) + + if (forcedTheme == "yellow") { + taskDifficultyButtons.textTintColor = ContextCompat.getColor(this, R.color.yellow_5) + habitScoringButtons.textTintColor = ContextCompat.getColor(this, R.color.yellow_5) + } + + setSupportActionBar(toolbar) supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) tintColor = getThemeColor(R.attr.taskFormTint) + val upperTintColor = getThemeColor(R.attr.colorAccent) + supportActionBar?.setBackgroundDrawable(ColorDrawable(upperTintColor)) + upperTextWrapper.setBackgroundColor(upperTintColor) + isChallengeTask = bundle.getBoolean(IS_CHALLENGE_TASK, false) @@ -172,7 +180,7 @@ class TaskFormActivity : BaseActivity() { setTagViews() }, RxErrorHandler.handleEmptyError())) compositeSubscription.add(userRepository.getUser().subscribe(Consumer { - usesTaskAttributeStats = it.preferences?.allocationMode == "taskbased" + usesTaskAttributeStats = it.preferences?.allocationMode == "taskbased" && it.preferences?.automaticAllocation == true configureForm() }, RxErrorHandler.handleEmptyError())) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt index f99e55976..259eec1a0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt @@ -36,7 +36,7 @@ class MountDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Ada override fun onBindViewHolder(holder: androidx.recyclerview.widget.RecyclerView.ViewHolder, position: Int) { when (val obj = this.itemList[position]) { - is String -> (holder as? SectionViewHolder)?.bind(obj) + is StableSection -> (holder as? SectionViewHolder)?.bind(obj) is Mount -> (holder as? MountViewHolder)?.bind(obj, ownedMounts?.get(obj.key ?: "")?.owned == true) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt index 1ceeb000f..e0b46ec18 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt @@ -4,6 +4,7 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.facebook.drawee.view.SimpleDraweeView import com.habitrpg.android.habitica.R @@ -24,6 +25,7 @@ import io.reactivex.subjects.PublishSubject class StableRecyclerAdapter : RecyclerView.Adapter() { + var shopSpriteSuffix: String? = null private var eggs: Map = mapOf() var animalIngredientsRetriever: ((Animal) -> Pair)? = null var itemType: String? = null @@ -53,7 +55,14 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { when (val item = this.itemList[position]) { "header" -> (holder as? StableHeaderViewHolder)?.bind() - is StableSection -> (holder as? SectionViewHolder)?.bind(item) + is StableSection -> { + if (item.key == "drop") { + val params = holder.itemView.layoutParams as GridLayoutManager.LayoutParams + params.topMargin = -30 + holder.itemView.layoutParams = params + } + (holder as? SectionViewHolder)?.bind(item) + } is Animal -> { val isIndividualAnimal = item.type == "special" || item.type == "wacky" if (isIndividualAnimal) { @@ -109,11 +118,12 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { notifyDataSetChanged() } - internal class StableHeaderViewHolder(parent: ViewGroup) : RecyclerView.ViewHolder(parent.inflate(R.layout.shop_header)) { + internal inner class StableHeaderViewHolder(parent: ViewGroup) : RecyclerView.ViewHolder(parent.inflate(R.layout.shop_header)) { private var binding: ShopHeaderBinding = ShopHeaderBinding.bind(itemView) fun bind() { + binding.npcBannerView.shopSpriteSuffix = shopSpriteSuffix ?: "" binding.npcBannerView.identifier = "stable" binding.namePlate.setText(R.string.stable_owner) binding.descriptionView.visibility = View.GONE diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt index 2551b98b1..988b5337f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt @@ -135,7 +135,8 @@ class MountDetailRecyclerFragment : BaseMainFragment() { for (mount in unsortedAnimals) { if (mount.type == "wacky" || mount.type == "special") continue if (mount.type != lastMount?.type) { - currentSection = StableSection(mount.type, mount.getTranslatedType(context)) + val title = context?.getString(R.string.pet_category, mount.getTranslatedType(context)) + currentSection = StableSection(mount.type, title ?: "") items.add(currentSection) } currentSection?.let { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt index 37b6b6c9f..a9e9c4f2a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt @@ -24,6 +24,7 @@ import com.habitrpg.android.habitica.ui.helpers.bindView import com.habitrpg.android.habitica.ui.helpers.resetViews import io.reactivex.functions.BiFunction import io.reactivex.functions.Consumer +import io.reactivex.rxkotlin.combineLatest import io.realm.RealmResults import org.greenrobot.eventbus.Subscribe import java.util.ArrayList @@ -140,35 +141,35 @@ class PetDetailRecyclerFragment : BaseMainFragment() { } .subscribe(Consumer { adapter.setOwnedMounts(it) }, RxErrorHandler.handleEmptyError())) compositeSubscription.add(inventoryRepository.getOwnedItems(true).subscribe(Consumer { adapter.setOwnedItems(it) }, RxErrorHandler.handleEmptyError())) - compositeSubscription.add(inventoryRepository.getPets(animalType, animalGroup, animalColor).zipWith(inventoryRepository.getOwnedPets() + compositeSubscription.add(inventoryRepository.getPets(animalType, animalGroup, animalColor).combineLatest(inventoryRepository.getOwnedPets() .map { ownedPets -> val petMap = mutableMapOf() ownedPets.forEach { petMap[it.key ?: ""] = it } return@map petMap }.doOnNext { adapter.setOwnedPets(it) - }, BiFunction, Map, List> { unsortedAnimals, ownedAnimals -> + }).map { val items = mutableListOf() var lastPet: Pet? = null var currentSection: StableSection? = null - for (pet in unsortedAnimals) { + for (pet in it.first) { if (pet.type == "wacky" || pet.type == "special") continue if (pet.type != lastPet?.type) { - currentSection = StableSection(pet.type, pet.getTranslatedType(context)) + val title = context?.getString(R.string.pet_category, pet.getTranslatedType(context)) + currentSection = StableSection(pet.type, title ?: "") items.add(currentSection) } - currentSection?.let { - it.totalCount += 1 - if (ownedAnimals.containsKey(pet.key)) { - it.ownedCount += 1 + currentSection?.let {section -> + section.totalCount += 1 + if (it.second.containsKey(pet.key)) { + section.ownedCount += 1 } } items.add(pet) lastPet = pet } items - }) - .subscribe(Consumer { adapter.setItemList(it) }, RxErrorHandler.handleEmptyError())) + }.subscribe(Consumer { adapter.setItemList(it) }, RxErrorHandler.handleEmptyError())) compositeSubscription.add(inventoryRepository.getMounts(animalType, animalGroup, animalColor).subscribe(Consumer> { adapter.setExistingMounts(it) }, RxErrorHandler.handleEmptyError())) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt index 9e8788e91..0fd1eb5c7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt @@ -10,6 +10,7 @@ import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.extensions.getTranslatedType import com.habitrpg.android.habitica.extensions.inflate +import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.inventory.Animal import com.habitrpg.android.habitica.models.inventory.Egg @@ -31,6 +32,8 @@ class StableRecyclerFragment : BaseFragment() { @Inject lateinit var inventoryRepository: InventoryRepository + @Inject + lateinit var configManager: AppConfigManager private val recyclerView: RecyclerViewEmptySupport? by bindView(R.id.recyclerView) private val emptyView: TextView? by bindView(R.id.emptyView) @@ -92,6 +95,7 @@ class StableRecyclerFragment : BaseFragment() { Pair(egg as? Egg, potion as? HatchingPotion) } adapter?.itemType = this.itemType + adapter?.shopSpriteSuffix = configManager.shopSpriteSuffix() recyclerView?.adapter = adapter recyclerView?.itemAnimator = SafeDefaultItemAnimator() @@ -185,7 +189,12 @@ class StableRecyclerFragment : BaseFragment() { if (items.size > 0 && items[items.size - 1].javaClass == StableSection::class.java) { items.removeAt(items.size - 1) } - val section = StableSection(animal.type, animal.getTranslatedType(context)) + val title = if (itemType == "pets") { + context?.getString(R.string.pet_category, animal.getTranslatedType(context)) + } else { + context?.getString(R.string.mount_category, animal.getTranslatedType(context)) + } + val section = StableSection(animal.type, title ?: "") items.add(section) lastSection = section } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt index 053bda468..ebe9baf97 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt @@ -61,7 +61,7 @@ class PetViewHolder(parent: ViewGroup, private val equipEvents: PublishSubject { - val itemContent = PurchaseDialogItemContent(context) - if (shopItem.canPurchaseBulk) { - itemContent.stepperView.visibility = View.VISIBLE - itemContent.stepperView.onValueChanged = { - purchaseQuantity = it.toInt() - updatePurchaseTotal() - } - } else { - itemContent.stepperView.visibility = View.GONE - } - contentView = itemContent - } - shopItem.isTypeQuest -> { + shopItem.isTypeItem -> contentView = PurchaseDialogItemContent(context) + shopItem.isTypeQuest -> { contentView = PurchaseDialogQuestContent(context) inventoryRepository.getQuestContent(shopItem.key).firstElement().subscribe(Consumer { contentView.setQuestContent(it) }, RxErrorHandler.handleEmptyError()) } - shopItem.isTypeGear -> { + shopItem.isTypeGear -> { contentView = PurchaseDialogGearContent(context) inventoryRepository.getEquipment(shopItem.key).firstElement().subscribe(Consumer { contentView.setEquipment(it) }, RxErrorHandler.handleEmptyError()) checkGearClass() } - "gems" == shopItem.purchaseType -> { - val gemContent = PurchaseDialogGemsContent(context) - gemContent.stepperView.onValueChanged = { + "gems" == shopItem.purchaseType -> contentView = PurchaseDialogGemsContent(context) + else -> contentView = PurchaseDialogBaseContent(context) + } + + val stepperView = contentView.findViewById(R.id.stepper_view) + if (stepperView != null) { + if (shopItem.canPurchaseBulk) { + stepperView.visibility = View.VISIBLE + stepperView.onValueChanged = { purchaseQuantity = it.toInt() updatePurchaseTotal() } - contentView = gemContent + } else { + stepperView.visibility = View.GONE } - else -> contentView = PurchaseDialogBaseContent(context) } amountErrorLabel = contentView.findViewById(R.id.amount_error_label) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/HabitScoringButtonsView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/HabitScoringButtonsView.kt index 1ab328c21..65d9b3e95 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/HabitScoringButtonsView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/HabitScoringButtonsView.kt @@ -29,13 +29,14 @@ class HabitScoringButtonsView @JvmOverloads constructor( var tintColor: Int = ContextCompat.getColor(context, R.color.brand_300) + var textTintColor: Int? = null var isPositive = true set(value) { field = value positiveImageView.setImageDrawable(HabiticaIconsHelper.imageOfHabitControlPlus(tintColor, value).asDrawable(resources)) if (value) { - positiveTextView.setTextColor(tintColor) + positiveTextView.setTextColor(textTintColor ?: tintColor) positiveView.contentDescription = toContentDescription(R.string.positive_habit_form, R.string.on) positiveTextView.typeface = Typeface.create("sans-serif-medium", Typeface.NORMAL) } else { @@ -50,7 +51,7 @@ class HabitScoringButtonsView @JvmOverloads constructor( field = value negativeImageView.setImageDrawable(HabiticaIconsHelper.imageOfHabitControlMinus(tintColor, value).asDrawable(resources)) if (value) { - negativeTextView.setTextColor(tintColor) + negativeTextView.setTextColor(textTintColor ?: tintColor) negativeView.contentDescription = toContentDescription(R.string.negative_habit_form, R.string.on) negativeTextView.typeface = Typeface.create("sans-serif-medium", Typeface.NORMAL) } else { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskDifficultyButtons.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskDifficultyButtons.kt index 858dc4be9..50bebcf13 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskDifficultyButtons.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskDifficultyButtons.kt @@ -21,6 +21,7 @@ class TaskDifficultyButtons @JvmOverloads constructor( ) : LinearLayout(context, attrs, defStyleAttr) { var tintColor: Int = ContextCompat.getColor(context, R.color.brand_300) + var textTintColor: Int? = null var selectedDifficulty: Float = 1f set(value) { field = value @@ -58,7 +59,7 @@ class TaskDifficultyButtons @JvmOverloads constructor( var difficultyColor = ContextCompat.getColor(context, R.color.white) if (isActive) { view.findViewById(R.id.image_view).background.mutate().setTint(tintColor) - view.findViewById(R.id.text_view).setTextColor(tintColor) + view.findViewById(R.id.text_view).setTextColor(textTintColor ?: tintColor) view.findViewById(R.id.text_view).typeface = Typeface.create("sans-serif-medium", Typeface.NORMAL) } else { view.findViewById(R.id.image_view).background.mutate().setTint(ContextCompat.getColor(context, R.color.taskform_gray)) diff --git a/Habitica/staff/release/output.json b/Habitica/staff/release/output.json index de4c44ce8..dd6cdca9a 100644 --- a/Habitica/staff/release/output.json +++ b/Habitica/staff/release/output.json @@ -11,8 +11,8 @@ "type": "SINGLE", "filters": [], "properties": [], - "versionCode": 2459, - "versionName": "2459", + "versionCode": 2500, + "versionName": "2500", "enabled": true, "outputFile": "Habitica-staff-release.apk" }