From 80a30bf4ad671e81964e550714e131550598cfc1 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 12 Sep 2023 16:40:12 +0200 Subject: [PATCH] tweaks --- Habitica/res/layout/activity_armoire.xml | 6 +- Habitica/res/layout/activity_death.xml | 6 ++ Habitica/res/values/strings.xml | 1 + .../data/implementation/UserRepositoryImpl.kt | 6 ++ .../habitica/ui/activities/ArmoireActivity.kt | 2 +- .../habitica/ui/activities/DeathActivity.kt | 23 +++++-- version.properties | 2 +- .../habitica/ui/activities/LoginActivity.kt | 62 +------------------ .../ui/views/ConnectedActionChipView.kt | 2 +- wearos/src/main/res/layout/activity_login.xml | 49 +-------------- .../src/main/res/layout/stat_value_layout.xml | 6 +- 11 files changed, 44 insertions(+), 121 deletions(-) diff --git a/Habitica/res/layout/activity_armoire.xml b/Habitica/res/layout/activity_armoire.xml index bc8ef3dd0..a5bfd916d 100644 --- a/Habitica/res/layout/activity_armoire.xml +++ b/Habitica/res/layout/activity_armoire.xml @@ -203,7 +203,7 @@ android:layout_height="wrap_content" android:text="@string/subscription_benefit_armoire_sub" android:textColor="@color/white" - style="@style/Body2" + style="@style/Body1" android:gravity="center" android:paddingHorizontal="48dp" android:layout_marginTop="6dp"/> @@ -256,8 +256,8 @@ android:layout_height="wrap_content" android:text="@string/armoire_drop_rates" android:textColor="@color/brand_600" - android:layout_marginTop="22dp" - android:layout_marginBottom="8dp" + android:layout_marginTop="16dp" + android:layout_marginBottom="16dp" style="@style/Body2"/> diff --git a/Habitica/res/layout/activity_death.xml b/Habitica/res/layout/activity_death.xml index 938db55ee..2b5e2dc04 100644 --- a/Habitica/res/layout/activity_death.xml +++ b/Habitica/res/layout/activity_death.xml @@ -195,4 +195,10 @@ + diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 61185c294..e5c1880ef 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -1458,6 +1458,7 @@ \@Mentions in Group Plans Subscribe to hold on with 1HP! Your subscription gives you an extra chance at the Armoire! + You got a second chance with 1HP! diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt index e440be0bc..51d1e379c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt @@ -100,7 +100,13 @@ class UserRepositoryImpl( override suspend fun revive(): User? { val revivedUser = apiClient.revive() + val currentUser = localRepository.getLiveUser(currentUserID) + if (revivedUser != null && currentUser != null) { + val brokenItem = currentUser.items?.gear?.owned?.firstOrNull { equipment -> + revivedUser.items?.gear?.owned?.filter { it.key == equipment.key }?.size == 0 + } + } return retrieveUser(false, true) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt index 432b3f515..e992c93da 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ArmoireActivity.kt @@ -210,7 +210,7 @@ class ArmoireActivity : BaseActivity() { lifecycleScope.launch(ExceptionHandler.coroutine()) { userRepository.updateUser("stats.gp", currentGold + 100) val buyResponse = - inventoryRepository.buyItem(user, "armoire", 100.0, 1) ?: return@launch + inventoryRepository.buyItem(user, "armoire", 0.0, 1) ?: return@launch configure( buyResponse.armoire["type"] ?: "", buyResponse.armoire["dropKey"] ?: "", diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt index 4980ce5a9..3f4e943ef 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/DeathActivity.kt @@ -4,9 +4,12 @@ import android.content.SharedPreferences import android.graphics.drawable.BitmapDrawable import android.os.Bundle import android.view.View +import android.view.ViewGroup import android.view.animation.AccelerateInterpolator import androidx.core.content.edit import androidx.lifecycle.lifecycleScope +import com.habitrpg.android.habitica.HabiticaApplication +import com.habitrpg.android.habitica.HabiticaBaseApplication import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.databinding.ActivityDeathBinding @@ -35,7 +38,7 @@ import java.util.Date import javax.inject.Inject @AndroidEntryPoint -class DeathActivity : BaseActivity() { +class DeathActivity : BaseActivity(), SnackbarActivity { private lateinit var binding: ActivityDeathBinding @Inject @@ -135,16 +138,15 @@ class DeathActivity : BaseActivity() { putLong("last_sub_revive", Date().time) } lifecycleScope.launchCatching { - delay(400) + delay(300) binding.reviveSubscriberWrapper.startAnimation(Animations.fadeOutAnimation()) } lifecycleScope.launch(ExceptionHandler.coroutine()) { userRepository.updateUser("stats.hp", 1) + HabiticaSnackbar.showSnackbar( + this@DeathActivity.snackbarContainer(), getString(R.string.subscriber_benefit_success_faint), HabiticaSnackbar.SnackbarDisplayType.SUCCESS, isSubscriberBenefit = true) + delay(2000) finish() - (parent as? SnackbarActivity)?.snackbarContainer()?.let { it1 -> - HabiticaSnackbar.showSnackbar( - it1, getString(R.string.subscriber_benefit_used_faint), HabiticaSnackbar.SnackbarDisplayType.SUCCESS, isSubscriberBenefit = true) - } } } @@ -153,6 +155,11 @@ class DeathActivity : BaseActivity() { lifecycleScope.launch(ExceptionHandler.coroutine()) { userRepository.revive() finish() + delay(1000) + (HabiticaBaseApplication.getInstance(this@DeathActivity)?.currentActivity as? SnackbarActivity)?.let {activity -> + HabiticaSnackbar.showSnackbar( + activity.snackbarContainer(), getString(R.string.subscriber_benefit_success_faint), HabiticaSnackbar.SnackbarDisplayType.SUCCESS, isSubscriberBenefit = true) + } } } startAnimating() @@ -186,4 +193,8 @@ class DeathActivity : BaseActivity() { override fun onBackPressed() { moveTaskToBack(true) } + + override fun snackbarContainer(): ViewGroup { + return binding.snackbarContainer + } } diff --git a/version.properties b/version.properties index c6c4d9e12..647c06e3b 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ NAME=4.3 -CODE=6511 \ No newline at end of file +CODE=6521 \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/LoginActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/LoginActivity.kt index 1e31df4d0..c3f1e7d53 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/LoginActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/LoginActivity.kt @@ -20,8 +20,7 @@ import dagger.hilt.android.AndroidEntryPoint class LoginActivity : BaseActivity() { enum class State { INITIAL, - OTHER, - INPUT + OTHER } override val viewModel: LoginViewModel by viewModels() private var currentState: State = State.INITIAL @@ -34,32 +33,14 @@ class LoginActivity : BaseActivity() { binding.otherButton.isVisible = true binding.googleLoginButton.isVisible = false binding.registerButton.isVisible = false - binding.usernamePasswordButton.isVisible = false - binding.usernameEditText.isVisible = false - binding.passwordEditText.isVisible = false - binding.loginButton.isVisible = false } State.OTHER -> { binding.descriptionView.isVisible = false binding.signInOnPhoneButton.isVisible = false binding.otherButton.isVisible = false binding.googleLoginButton.isVisible = true - binding.registerButton.isVisible = binding.registerButton.isEnabled - binding.usernamePasswordButton.isVisible = true - binding.usernameEditText.isVisible = false - binding.passwordEditText.isVisible = false - binding.loginButton.isVisible = false - } - State.INPUT -> { - binding.descriptionView.isVisible = false - binding.signInOnPhoneButton.isVisible = false - binding.otherButton.isVisible = false - binding.googleLoginButton.isVisible = false - binding.registerButton.isVisible = false - binding.usernamePasswordButton.isVisible = false - binding.usernameEditText.isVisible = true - binding.passwordEditText.isVisible = true - binding.loginButton.isVisible = true + binding.registerButton.isVisible = true + binding.registerButton.alpha = if (binding.registerButton.isEnabled) 1.0f else 0.7f } } binding.scrollView.smoothScrollTo(0, 0) @@ -75,20 +56,10 @@ class LoginActivity : BaseActivity() { binding.signInOnPhoneButton.setOnClickListener { openLoginOnPhone() } binding.otherButton.setOnClickListener { currentState = State.OTHER } - binding.usernamePasswordButton.setOnClickListener { currentState = State.INPUT } - binding.loginButton.setOnClickListener { loginLocal() } binding.googleLoginButton.setOnClickListener { loginGoogle() } binding.registerButton.setOnClickListener { openRegisterOnPhone() } - binding.passwordEditText.transformationMethod = PasswordTransformationMethod() - binding.usernameEditText.doOnTextChanged { text, start, before, count -> - setLoginButtonIsEnabled() - } - binding.passwordEditText.doOnTextChanged { text, start, before, count -> - setLoginButtonIsEnabled() - } - currentState = State.INITIAL } @@ -100,37 +71,10 @@ class LoginActivity : BaseActivity() { openRemoteActivity(DeviceCommunication.SHOW_LOGIN) } - private fun loginLocal() { - val username: String = binding.usernameEditText.text.toString().trim { it <= ' ' } - val password: String = binding.passwordEditText.text.toString() - if (username.isEmpty() || password.isEmpty()) { - showValidationError(getString(R.string.login_validation_error_fieldsmissing)) - return - } - viewModel.login(username, password) { - stopAnimatingProgress() - } - startAnimatingProgress() - } - private fun loginGoogle() { viewModel.handleGoogleLogin(this, pickAccountResult) } - private fun showValidationError(message: String) { - val alert = AlertDialog.Builder(this).create() - alert.setTitle(R.string.login_validation_error_title) - alert.setMessage(message) - alert.setButton(AlertDialog.BUTTON_NEUTRAL, getString(R.string.ok)) { thisAlert, _ -> - thisAlert.dismiss() - } - alert.show() - } - - private fun setLoginButtonIsEnabled() { - binding.loginButton.isEnabled = binding.usernameEditText.text.isNotEmpty() && binding.passwordEditText.text.isNotEmpty() - } - private val pickAccountResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { val task = GoogleSignIn.getSignedInAccountFromIntent(it.data) viewModel.handleGoogleLoginResult(this, task, recoverFromPlayServicesErrorResult) diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/ConnectedActionChipView.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/ConnectedActionChipView.kt index 1162848a7..938f23166 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/ConnectedActionChipView.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/ConnectedActionChipView.kt @@ -23,7 +23,7 @@ class ConnectedActionChipView(context: Context, attrs: AttributeSet? = null) : val result = Tasks.await(capabilityClient.getCapability("open_activity", CapabilityClient.FILTER_REACHABLE)) launch(Dispatchers.Main) { isEnabled = result.nodes.firstOrNull { it.isNearby } != null - isVisible = isEnabled + alpha = if (isEnabled) 1.0f else 0.7f } } } diff --git a/wearos/src/main/res/layout/activity_login.xml b/wearos/src/main/res/layout/activity_login.xml index 575e9a6d2..d1ed336eb 100644 --- a/wearos/src/main/res/layout/activity_login.xml +++ b/wearos/src/main/res/layout/activity_login.xml @@ -15,8 +15,8 @@ android:gravity="center" android:animateLayoutChanges="true"> - - - - - - -