diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt index c6515e354..1657cfdd8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt @@ -190,7 +190,7 @@ class AppConfigManager(contentRepository: ContentRepository?) : } fun enableCustomizationShop(): Boolean { - if (BuildConfig.DEBUG) return true + if (BuildConfig.DEBUG) return false return remoteConfig.getBoolean("enableCustomizationShop") } } 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 7f3ffa05b..2645d6d32 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 @@ -7,6 +7,7 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.inventory.Customization import com.habitrpg.android.habitica.models.inventory.CustomizationSet +import com.habitrpg.android.habitica.models.inventory.Equipment import com.habitrpg.android.habitica.models.inventory.ItemEvent import com.habitrpg.android.habitica.models.user.User import io.realm.RealmList @@ -234,5 +235,16 @@ open class ShopItem : RealmObject(), BaseObject { } return item } + + fun fromAnimalEquipment(equipment: Equipment?): ShopItem { + val item = ShopItem() + item.key = equipment?.key ?: "" + item.text = equipment?.text + item.currency = "gems" + item.value = 2 + item.purchaseType = "gear" + item.imageName = equipment?.key + return item + } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationEquipmentRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationEquipmentRecyclerViewAdapter.kt index 786dd4e0a..0d9021a44 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationEquipmentRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationEquipmentRecyclerViewAdapter.kt @@ -13,10 +13,13 @@ import com.habitrpg.android.habitica.databinding.CustomizationGridItemBinding import com.habitrpg.android.habitica.databinding.DialogPurchaseCustomizationBinding import com.habitrpg.android.habitica.models.inventory.CustomizationSet import com.habitrpg.android.habitica.models.inventory.Equipment +import com.habitrpg.android.habitica.models.shops.ShopItem import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog +import com.habitrpg.android.habitica.ui.views.shops.PurchaseDialog import com.habitrpg.common.habitica.extensions.loadImage import com.habitrpg.common.habitica.helpers.MainNavigationController +import com.habitrpg.common.habitica.views.AvatarView import com.habitrpg.common.habitica.views.PixelArtView class CustomizationEquipmentRecyclerViewAdapter : @@ -36,6 +39,7 @@ class CustomizationEquipmentRecyclerViewAdapter : var onSelect: ((Equipment) -> Unit)? = null var onUnlock: ((Equipment) -> Unit)? = null + var onShowPurchaseDialog: ((ShopItem) -> Unit)? = null override fun onCreateViewHolder( parent: ViewGroup, @@ -125,42 +129,11 @@ class CustomizationEquipmentRecyclerViewAdapter : equipment?.value } if (equipment?.owned != true && (itemValue ?: 0.0) > 0.0) { - val dialogContent = LinearLayout(itemView.context) - DialogPurchaseCustomizationBinding.inflate( - LayoutInflater.from(itemView.context), - dialogContent, + onShowPurchaseDialog?.invoke( + ShopItem.fromAnimalEquipment( + equipment + ), ) - - val imageView = dialogContent.findViewById(R.id.imageView) - imageView.loadImage("shop_" + this.equipment?.key) - - val priceLabel = dialogContent.findViewById(R.id.priceLabel) - priceLabel?.text = itemValue.toString() - - (dialogContent.findViewById(R.id.gem_icon) as? ImageView)?.setImageBitmap( - HabiticaIconsHelper.imageOfGem(), - ) - - val dialog = HabiticaAlertDialog(itemView.context) - dialog.addButton(R.string.purchase_button, true) { _, _ -> - gemBalance?.let { - if ((itemValue ?: 0.0) > it) { - MainNavigationController.navigate( - R.id.gemPurchaseActivity, - bundleOf(Pair("openSubscription", false)), - ) - return@addButton - } - } - - equipment?.let { - onUnlock?.invoke(it) - } - } - dialog.setTitle(R.string.purchase_customization) - dialog.setAdditionalContentView(dialogContent) - dialog.addButton(R.string.reward_dialog_dismiss, false) - dialog.show() return } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt index 36db1c042..86410e052 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarEquipmentFragment.kt @@ -17,6 +17,7 @@ import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment import com.habitrpg.android.habitica.ui.helpers.MarginDecoration import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel +import com.habitrpg.android.habitica.ui.views.shops.PurchaseDialog import com.habitrpg.common.habitica.helpers.ExceptionHandler import com.habitrpg.common.habitica.helpers.launchCatching import dagger.hilt.android.AndroidEntryPoint @@ -72,6 +73,10 @@ class AvatarEquipmentFragment : userRepository.retrieveUser(forced = true) } } + adapter.onShowPurchaseDialog = { item -> + val dialog = PurchaseDialog(requireContext(), userRepository, inventoryRepository, item) + dialog.show() + } return super.onCreateView(inflater, container, savedInstanceState) } diff --git a/build.gradle b/build.gradle index 1dcc79fbd..43f6fcb53 100644 --- a/build.gradle +++ b/build.gradle @@ -6,6 +6,7 @@ buildscript { ext { min_sdk = 21 target_sdk = 34 + wearos_target_sdk = 33 app_version_name = '' app_version_code = 0 diff --git a/fastlane/README.md b/fastlane/README.md index f57928b5d..2eff082fe 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -63,6 +63,14 @@ Submit a new Beta Build to Google Play Deploy a new version to the Google Play +### android upload_to_slack + +```sh +[bundle exec] fastlane android upload_to_slack +``` + +Upload the latest output APK to slack + ---- This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. diff --git a/version.properties b/version.properties index ee5bd6459..c0746680d 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ NAME=4.3.7 -CODE=7631 \ No newline at end of file +CODE=7671 \ No newline at end of file diff --git a/wearos/build.gradle b/wearos/build.gradle index 66a1ed969..2cf494d1f 100644 --- a/wearos/build.gradle +++ b/wearos/build.gradle @@ -21,8 +21,8 @@ android { defaultConfig { applicationId "com.habitrpg.android.habitica" minSdk 26 - targetSdk target_sdk - compileSdk 34 + targetSdk wearos_target_sdk + compileSdk target_sdk versionCode app_version_code + 1 versionName "${app_version_name}w" buildConfigField "String", "TESTING_LEVEL", "\"production\""