From 86425b08c4f95c9a29b3df99dbd958f37276a4b4 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Wed, 12 Oct 2022 13:08:47 -0400 Subject: [PATCH] Black screen when launching app first time fix hasTaskData was not being set although task list was set, create Observer to remove after retrieving tasks. --- .../habitica/ui/activities/RYAActivity.kt | 29 ++++++++++++------- .../habitica/ui/viewmodels/RYAViewModel.kt | 2 -- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/RYAActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/RYAActivity.kt index 6cef6d48a..1e995e122 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/RYAActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/RYAActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.widget.LinearLayout import androidx.activity.viewModels import androidx.core.view.isVisible +import androidx.lifecycle.Observer import androidx.lifecycle.lifecycleScope import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.ActivityRyaBinding @@ -26,15 +27,21 @@ class RYAActivity : BaseActivity() { binding = ActivityRyaBinding.inflate(layoutInflater) super.onCreate(savedInstanceState) - viewModel.tasks.observe(this) { - if (!viewModel.hasTaskData) return@observe - if (it.isEmpty()) { - runCron() - return@observe + viewModel.tasks.observe( + this, + object : Observer> { + override fun onChanged(list: List) { + if (list.isEmpty()) { + runCron() + viewModel.tasks.removeObserver(this) + } else { + binding.scrollView.isVisible = true + createTaskListViews(list) + viewModel.tasks.removeObserver(this) + } + } } - binding.scrollView.isVisible = true - createTaskListViews(it) - } + ) binding.ryaButton.setOnClickListener { binding.titleView.text = getString(R.string.check_off_yesterday) @@ -58,9 +65,9 @@ class RYAActivity : BaseActivity() { if (!viewModel.hasRunCron) { startActivity( Intent(this, RYAActivity::class.java) - .apply { - addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK) - }) + .apply { + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK) + }) } super.onDestroy() } diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/RYAViewModel.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/RYAViewModel.kt index 2a9e07572..6d4876865 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/RYAViewModel.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/RYAViewModel.kt @@ -26,7 +26,6 @@ class RYAViewModel @Inject constructor( ) : BaseViewModel(userRepository, taskRepository, exceptionBuilder, appStateManager) { var hasRunCron: Boolean = false val tasks = MutableLiveData>() - var hasTaskData = false private val tasksToComplete = mutableListOf() @@ -36,7 +35,6 @@ class RYAViewModel @Inject constructor( .map { it.filter { task -> task.isDue == true && !task.completed } } .first() tasks.value = taskList - hasTaskData = true } }