Skip to content

Commit

Permalink
Merge pull request #1982 from Hafizzle/Fiz/change-class-flow-update
Browse files Browse the repository at this point in the history
Change class flow from settings update
  • Loading branch information
phillipthelen committed Jun 23, 2023
2 parents d52ea7b + 8f4994d commit 06cadb2
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.navArgs
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.databinding.ActivityClassSelectionBinding
import com.habitrpg.android.habitica.extensions.observeOnce
import com.habitrpg.android.habitica.models.user.Gear
import com.habitrpg.android.habitica.models.user.Items
import com.habitrpg.android.habitica.models.user.Outfit
Expand All @@ -21,6 +22,7 @@ import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaProgressDialog
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGemsDialog
import com.habitrpg.common.habitica.helpers.ExceptionHandler
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Dispatchers
Expand Down Expand Up @@ -262,12 +264,29 @@ class ClassSelectionActivity : BaseActivity() {
}

private fun selectClass(selectedClass: String, isChanging: Boolean) {
shouldFinish = true
val dialog = this.displayProgressDialog(getString(R.string.changing_class_progress))
lifecycleScope.launch(Dispatchers.Main) {
userRepository.changeClass(selectedClass)
dialog.hide()
if (isChanging) displayClassChanged(selectedClass)
userViewModel.user.observeOnce(this) { user ->
if (user == null) {
return@observeOnce
}
if ((user.gemCount ?: 0) >= 3) {
val dialog = HabiticaAlertDialog(this)
dialog.setTitle(R.string.change_class_confirmation)
dialog.addButton(R.string.change_class, true, true) { _, _ ->
shouldFinish = true
val dialog =
this.displayProgressDialog(getString(R.string.changing_class_progress))
lifecycleScope.launch(Dispatchers.Main) {
userRepository.changeClass(selectedClass)
dialog.hide()
if (isChanging) displayClassChanged(selectedClass)
}
}
dialog.addButton(R.string.dialog_go_back, false)
dialog.enqueue()
} else {
val dialog = InsufficientGemsDialog(this, 3)
dialog.show()
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,32 +140,11 @@ class PreferencesFragment : BasePreferencesFragment(),
}

"choose_class" -> {
val bundle = Bundle()
bundle.putBoolean("isInitialSelection", user?.flags?.classSelected == false)

val intent = Intent(activity, ClassSelectionActivity::class.java)
intent.putExtras(bundle)

if (user?.flags?.classSelected == true && user?.preferences?.disableClasses == false) {
if ((user?.gemCount ?: 0) >= 3) {
context?.let { context ->
val dialog = HabiticaAlertDialog(context)
dialog.setTitle(R.string.change_class_confirmation)
dialog.addButton(R.string.change_class, true, true) { _, _ ->
classSelectionResult.launch(
intent
)
}
dialog.addButton(R.string.dialog_go_back, false)
dialog.enqueue()
}
} else {
activity?.let { activity ->
val dialog = InsufficientGemsDialog(activity, 3)
dialog.show()
}
}
} else {
val bundle = Bundle()
bundle.putBoolean("isInitialSelection", user?.flags?.classSelected == false)
val intent = Intent(activity, ClassSelectionActivity::class.java)
intent.putExtras(bundle)
classSelectionResult.launch(intent)
}
return true
Expand Down

0 comments on commit 06cadb2

Please sign in to comment.