mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-13 17:51:57 +00:00
Merge pull request #1920 from Hafizzle/Fiz/taskform-coroutines
Resolve potential Realm/Coroutine threading conflict
This commit is contained in:
commit
4e4aecee94
1 changed files with 14 additions and 17 deletions
|
|
@ -43,7 +43,6 @@ import com.habitrpg.android.habitica.databinding.ActivityTaskFormBinding
|
||||||
import com.habitrpg.android.habitica.extensions.OnChangeTextWatcher
|
import com.habitrpg.android.habitica.extensions.OnChangeTextWatcher
|
||||||
import com.habitrpg.android.habitica.extensions.addCancelButton
|
import com.habitrpg.android.habitica.extensions.addCancelButton
|
||||||
import com.habitrpg.android.habitica.helpers.TaskAlarmManager
|
import com.habitrpg.android.habitica.helpers.TaskAlarmManager
|
||||||
import com.habitrpg.android.habitica.helpers.launchCatching
|
|
||||||
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager
|
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager
|
||||||
import com.habitrpg.android.habitica.models.Tag
|
import com.habitrpg.android.habitica.models.Tag
|
||||||
import com.habitrpg.android.habitica.models.members.Member
|
import com.habitrpg.android.habitica.models.members.Member
|
||||||
|
|
@ -216,7 +215,7 @@ class TaskFormActivity : BaseActivity() {
|
||||||
taskType = TaskType.from(bundle.getString(TASK_TYPE_KEY)) ?: TaskType.HABIT
|
taskType = TaskType.from(bundle.getString(TASK_TYPE_KEY)) ?: TaskType.HABIT
|
||||||
preselectedTags = bundle.getStringArrayList(SELECTED_TAGS_KEY)
|
preselectedTags = bundle.getStringArrayList(SELECTED_TAGS_KEY)
|
||||||
|
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
tagRepository.getTags()
|
tagRepository.getTags()
|
||||||
.map { tagRepository.getUnmanagedCopy(it) }
|
.map { tagRepository.getUnmanagedCopy(it) }
|
||||||
.collect {
|
.collect {
|
||||||
|
|
@ -266,7 +265,7 @@ class TaskFormActivity : BaseActivity() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
taskCompletedMap.remove(it)
|
taskCompletedMap.remove(it)
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
task?.let { it1 -> taskRepository.markTaskNeedsWork(it1, it) }
|
task?.let { it1 -> taskRepository.markTaskNeedsWork(it1, it) }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -275,7 +274,7 @@ class TaskFormActivity : BaseActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
socialRepository.getGroupMembers(groupID ?: "").collect {
|
socialRepository.getGroupMembers(groupID ?: "").collect {
|
||||||
groupMembers = it
|
groupMembers = it
|
||||||
}
|
}
|
||||||
|
|
@ -300,9 +299,8 @@ class TaskFormActivity : BaseActivity() {
|
||||||
initialTaskInstance = task
|
initialTaskInstance = task
|
||||||
fillForm(task)
|
fillForm(task)
|
||||||
task.challengeID?.let { challengeID ->
|
task.challengeID?.let { challengeID ->
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
val challenge = challengeRepository.retrieveChallenge(challengeID)
|
val challenge = challengeRepository.retrieveChallenge(challengeID) ?: return@launch
|
||||||
?: return@launchCatching
|
|
||||||
this@TaskFormActivity.challenge = challenge
|
this@TaskFormActivity.challenge = challenge
|
||||||
binding.challengeNameView.text =
|
binding.challengeNameView.text =
|
||||||
getString(R.string.challenge_task_name, challenge.name)
|
getString(R.string.challenge_task_name, challenge.name)
|
||||||
|
|
@ -770,7 +768,7 @@ class TaskFormActivity : BaseActivity() {
|
||||||
alert.addButton(R.string.delete_task, true) { _, _ ->
|
alert.addButton(R.string.delete_task, true) { _, _ ->
|
||||||
if (task?.isValid != true) return@addButton
|
if (task?.isValid != true) return@addButton
|
||||||
task?.id?.let {
|
task?.id?.let {
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
taskRepository.deleteTask(it)
|
taskRepository.deleteTask(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -796,9 +794,9 @@ class TaskFormActivity : BaseActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showChallengeDeleteTask() {
|
private fun showChallengeDeleteTask() {
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
val tasks = taskRepository.getTasksForChallenge(task?.challengeID).firstOrNull()
|
val tasks = taskRepository.getTasksForChallenge(task?.challengeID).firstOrNull()
|
||||||
?: return@launchCatching
|
?: return@launch
|
||||||
val taskCount = tasks.size
|
val taskCount = tasks.size
|
||||||
val alert = HabiticaAlertDialog(this@TaskFormActivity)
|
val alert = HabiticaAlertDialog(this@TaskFormActivity)
|
||||||
alert.setTitle(getString(R.string.delete_challenge_task_title))
|
alert.setTitle(getString(R.string.delete_challenge_task_title))
|
||||||
|
|
@ -815,7 +813,7 @@ class TaskFormActivity : BaseActivity() {
|
||||||
isDestructive = true
|
isDestructive = true
|
||||||
) { _, _ ->
|
) { _, _ ->
|
||||||
challenge?.let {
|
challenge?.let {
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
challengeRepository.leaveChallenge(it, "keep-all")
|
challengeRepository.leaveChallenge(it, "keep-all")
|
||||||
taskRepository.deleteTask(task?.id ?: "")
|
taskRepository.deleteTask(task?.id ?: "")
|
||||||
userRepository.retrieveUser(true, true)
|
userRepository.retrieveUser(true, true)
|
||||||
|
|
@ -828,7 +826,7 @@ class TaskFormActivity : BaseActivity() {
|
||||||
isDestructive = true
|
isDestructive = true
|
||||||
) { _, _ ->
|
) { _, _ ->
|
||||||
challenge?.let {
|
challenge?.let {
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
challengeRepository.leaveChallenge(it, "remove-all")
|
challengeRepository.leaveChallenge(it, "remove-all")
|
||||||
userRepository.retrieveUser(true, true)
|
userRepository.retrieveUser(true, true)
|
||||||
}
|
}
|
||||||
|
|
@ -844,9 +842,9 @@ class TaskFormActivity : BaseActivity() {
|
||||||
if (!task.isValid) {
|
if (!task.isValid) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
val tasks = taskRepository.getTasksForChallenge(task.challengeID).firstOrNull()
|
val tasks = taskRepository.getTasksForChallenge(task.challengeID).firstOrNull()
|
||||||
?: return@launchCatching
|
?: return@launch
|
||||||
val taskCount = tasks.size
|
val taskCount = tasks.size
|
||||||
val dialog = HabiticaAlertDialog(this@TaskFormActivity)
|
val dialog = HabiticaAlertDialog(this@TaskFormActivity)
|
||||||
dialog.setTitle(R.string.broken_challenge)
|
dialog.setTitle(R.string.broken_challenge)
|
||||||
|
|
@ -860,7 +858,7 @@ class TaskFormActivity : BaseActivity() {
|
||||||
getString(R.string.keep_x_tasks, taskCount),
|
getString(R.string.keep_x_tasks, taskCount),
|
||||||
true
|
true
|
||||||
) { _, _ ->
|
) { _, _ ->
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
taskRepository.unlinkAllTasks(task.challengeID, "keep-all")
|
taskRepository.unlinkAllTasks(task.challengeID, "keep-all")
|
||||||
userRepository.retrieveUser(true, true)
|
userRepository.retrieveUser(true, true)
|
||||||
}
|
}
|
||||||
|
|
@ -870,8 +868,7 @@ class TaskFormActivity : BaseActivity() {
|
||||||
false,
|
false,
|
||||||
true
|
true
|
||||||
) { _, _ ->
|
) { _, _ ->
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
|
|
||||||
taskRepository.unlinkAllTasks(task.challengeID, "remove-all")
|
taskRepository.unlinkAllTasks(task.challengeID, "remove-all")
|
||||||
userRepository.retrieveUser(true, true)
|
userRepository.retrieveUser(true, true)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue