various fixes

This commit is contained in:
Phillip Thelen 2023-01-17 18:34:06 +01:00
parent 651148f56f
commit 61bfeb6862
7 changed files with 34 additions and 11 deletions

View file

@ -70,6 +70,7 @@ open class ShopItem : RealmObject(), BaseObject {
fun canAfford(user: User?, quantity: Int): Boolean = when (currency) { fun canAfford(user: User?, quantity: Int): Boolean = when (currency) {
"gold" -> (value * quantity) <= (user?.stats?.gp ?: 0.0) "gold" -> (value * quantity) <= (user?.stats?.gp ?: 0.0)
"gems" -> (value * quantity) <= (user?.gemCount ?: 0)
else -> true else -> true
} }

View file

@ -72,6 +72,7 @@ import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
import com.habitrpg.android.habitica.ui.views.CurrencyText import com.habitrpg.android.habitica.ui.views.CurrencyText
import com.habitrpg.android.habitica.ui.views.PixelArtView import com.habitrpg.android.habitica.ui.views.PixelArtView
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGemsDialog
import com.habitrpg.common.habitica.extensions.DataBindingUtils import com.habitrpg.common.habitica.extensions.DataBindingUtils
import kotlinx.coroutines.MainScope import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
@ -127,6 +128,11 @@ class BirthdayActivity : BaseActivity() {
lifecycleScope.launchCatching({ lifecycleScope.launchCatching({
isPurchasing.value = false isPurchasing.value = false
}) { }) {
if ((userViewModel.user.value?.gemCount ?: 0) < 60) {
val dialog = InsufficientGemsDialog(this@BirthdayActivity, 3)
dialog.show()
return@launchCatching
}
isPurchasing.value = true isPurchasing.value = true
val dialog = HabiticaAlertDialog(this@BirthdayActivity) val dialog = HabiticaAlertDialog(this@BirthdayActivity)
dialog.setTitle( dialog.setTitle(

View file

@ -10,7 +10,6 @@ import android.content.res.Configuration
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.KeyEvent import android.view.KeyEvent
import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@ -18,7 +17,6 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.appcompat.app.ActionBarDrawerToggle import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.content.res.AppCompatResources
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.livedata.observeAsState
@ -124,6 +122,21 @@ open class MainActivity : BaseActivity(), SnackbarActivity {
private var sideAvatarView: AvatarView? = null private var sideAvatarView: AvatarView? = null
private var drawerFragment: NavigationDrawerFragment? = null private var drawerFragment: NavigationDrawerFragment? = null
var drawerToggle: ActionBarDrawerToggle? = null var drawerToggle: ActionBarDrawerToggle? = null
var showBirthdayIcon = false
var showBackButton: Boolean? = null
set(value) {
if (field == value) return
if (value == true && showBirthdayIcon) {
drawerToggle?.isDrawerIndicatorEnabled = false
drawerToggle?.setHomeAsUpIndicator(R.drawable.arrow_back)
} else if (value == false && showBirthdayIcon) {
drawerToggle?.isDrawerIndicatorEnabled = false
drawerToggle?.setHomeAsUpIndicator(R.drawable.icon_birthday)
} else {
drawerToggle?.isDrawerIndicatorEnabled = value != true
}
field = value
}
private var resumeFromActivity = false private var resumeFromActivity = false
private var userQuestStatus = UserQuestStatus.NO_QUEST private var userQuestStatus = UserQuestStatus.NO_QUEST
private var lastNotificationOpen: Long? = null private var lastNotificationOpen: Long? = null
@ -335,7 +348,7 @@ open class MainActivity : BaseActivity(), SnackbarActivity {
return if (binding.root.parent is DrawerLayout && drawerToggle?.onOptionsItemSelected(item) == true) { return if (binding.root.parent is DrawerLayout && drawerToggle?.onOptionsItemSelected(item) == true) {
true true
} else if (item.itemId == android.R.id.home) { } else if (item.itemId == android.R.id.home) {
if (drawerToggle?.isDrawerIndicatorEnabled == true) { if (showBackButton != true) {
drawerFragment?.toggleDrawer() drawerFragment?.toggleDrawer()
} else { } else {
MainNavigationController.navigateBack() MainNavigationController.navigateBack()

View file

@ -110,18 +110,18 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler
var lastSet = CustomizationSet() var lastSet = CustomizationSet()
val today = Date() val today = Date()
for (customization in newCustomizationList) { for (customization in newCustomizationList) {
val isUsable = customization.isUsable(ownedCustomizations.contains(customization.id))
if (customization.availableFrom != null || customization.availableUntil != null) { if (customization.availableFrom != null || customization.availableUntil != null) {
if (((customization.availableFrom?.compareTo(today) if (((customization.availableFrom?.compareTo(today)
?: 0) > 0 || (customization.availableUntil?.compareTo(today) ?: 0) > 0 || (customization.availableUntil?.compareTo(today)
?: 0) < 0) && !customization.isUsable( ?: 0) < 0) && !isUsable
ownedCustomizations.contains(
customization.id
)
)
) { ) {
continue continue
} }
} }
if ((customization.identifier?.contains("HabitversaryBash") == true || customization.identifier?.contains("birthday") == true) && !isUsable) {
continue
}
if (customization.customizationSet != null && customization.customizationSet != lastSet.identifier) { if (customization.customizationSet != null && customization.customizationSet != lastSet.identifier) {
if (lastSet.hasPurchasable && lastSet.price > 0) { if (lastSet.hasPurchasable && lastSet.price > 0) {
customizationList.add(lastSet) customizationList.add(lastSet)
@ -136,7 +136,7 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler
} }
customizationList.add(customization) customizationList.add(customization)
lastSet.customizations.add(customization) lastSet.customizations.add(customization)
if (customization.isUsable(ownedCustomizations.contains(customization.id)) && lastSet.hasPurchasable) { if (isUsable && lastSet.hasPurchasable) {
lastSet.ownedCustomizations.add(customization) lastSet.ownedCustomizations.add(customization)
if (!lastSet.isSetDeal()) { if (!lastSet.isSetDeal()) {
lastSet.hasPurchasable = false lastSet.hasPurchasable = false

View file

@ -81,7 +81,7 @@ abstract class BaseMainFragment<VB : ViewBinding> : BaseFragment<VB>() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
activity?.drawerToggle?.isDrawerIndicatorEnabled = !showsBackButton activity?.showBackButton = showsBackButton
activity?.supportActionBar?.setDisplayHomeAsUpEnabled(true) activity?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
} }

View file

@ -178,9 +178,11 @@ class NavigationDrawerFragment : DialogFragment() {
newItems.addAll(adapter.items) newItems.addAll(adapter.items)
newItems.add(0, birthdayItem) newItems.add(0, birthdayItem)
adapter.updateItems(newItems) adapter.updateItems(newItems)
(activity as? MainActivity)?.showBirthdayIcon = true
} else if (event == null && item != null) { } else if (event == null && item != null) {
item.isVisible = false item.isVisible = false
adapter.updateItem(item) adapter.updateItem(item)
(activity as? MainActivity)?.showBirthdayIcon = true
} }
} }
} }

View file

@ -47,7 +47,8 @@ abstract class TaskListFactory internal constructor(
return return
} }
CoroutineScope(Dispatchers.Main + job).launch(ExceptionHandler.coroutine()) { CoroutineScope(Dispatchers.Main + job).launch(ExceptionHandler.coroutine()) {
val tasks = taskRepository.getTasks(taskType, null, emptyArray()).firstOrNull()?.filter { task -> val mirroredTasks = userRepository.getUser().firstOrNull()?.preferences?.tasks?.mirrorGroupTasks?.toTypedArray()
val tasks = taskRepository.getTasks(taskType, null, mirroredTasks ?: emptyArray()).firstOrNull()?.filter { task ->
task.type == TaskType.TODO && !task.completed || task.isDisplayedActive task.type == TaskType.TODO && !task.completed || task.isDisplayedActive
} ?: return@launch } ?: return@launch
taskList = taskRepository.getTaskCopies(tasks) taskList = taskRepository.getTaskCopies(tasks)