diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt index ca8aeef27..6f0e54624 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt @@ -11,6 +11,7 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import androidx.core.net.toUri +import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent @@ -93,6 +94,24 @@ class ChallengeDetailFragment : BaseMainFragment FullProfileActivity.open(leaderID) } + loadTasks() + + binding?.joinButton?.setOnClickListener { + challenge?.let { challenge -> + challengeRepository.joinChallenge(challenge) + .subscribe({ + lifecycleScope.launch(ExceptionHandler.coroutine()) { + userRepository.retrieveUser(true) + } + }, ExceptionHandler.rx()) + } + } + binding?.leaveButton?.setOnClickListener { showChallengeLeaveDialog() } + + refresh() + } + + private fun loadTasks() { challengeID?.let { id -> compositeSubscription.add( challengeRepository.getChallenge(id) @@ -107,7 +126,7 @@ class ChallengeDetailFragment : BaseMainFragment lifecycleScope.launch(ExceptionHandler.coroutine()) { set(socialRepository.retrieveMember(it)) } - }, ExceptionHandler.rx()) + }, ExceptionHandler.rx()) ) compositeSubscription.add( challengeRepository.getChallengeTasks(id).subscribe( @@ -158,20 +177,6 @@ class ChallengeDetailFragment : BaseMainFragment ) ) } - - binding?.joinButton?.setOnClickListener { - challenge?.let { challenge -> - challengeRepository.joinChallenge(challenge) - .subscribe({ - lifecycleScope.launch(ExceptionHandler.coroutine()) { - userRepository.retrieveUser(true) - } - }, ExceptionHandler.rx()) - } - } - binding?.leaveButton?.setOnClickListener { showChallengeLeaveDialog() } - - refresh() } override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { @@ -232,7 +237,11 @@ class ChallengeDetailFragment : BaseMainFragment challengeID?.let { id -> challengeRepository.retrieveChallenge(id) .flatMap { challengeRepository.retrieveChallengeTasks(id) } - .subscribe({ }, { + .subscribe({ taskList -> + if (binding?.taskGroupLayout?.childCount == 0 && taskList.tasks.isNotEmpty()) { + loadTasks() + } + }, { if (it is HttpException && it.code() == 404) { MainNavigationController.navigateBack() }