Fix clearing task fragments

pull/1830/head
Alex Baker 2 years ago
parent 626d2422b7
commit b23aa62d42

@ -356,9 +356,7 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
if (task == null) { if (task == null) {
return return
} }
taskEditFragment?.let { taskEditFragment?.save(remove = false)
it.save()
}
clearUi() clearUi()
coroutineScope { coroutineScope {
val freshTask = async { if (task.isNew) task else taskDao.fetch(task.id) ?: task } val freshTask = async { if (task.isNew) task else taskDao.fetch(task.id) ?: task }

@ -326,7 +326,7 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener {
return model return model
} }
suspend fun save() = editViewModel.save() suspend fun save(remove: Boolean = true) = editViewModel.save(remove)
/* /*
* ====================================================================== * ======================================================================

@ -673,7 +673,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
return onOptionsItemSelected(item) return onOptionsItemSelected(item)
} }
fun onTaskListItemClicked(task: Task?) = lifecycleScope.launch { private fun onTaskListItemClicked(task: Task?) = lifecycleScope.launch {
callbacks.onTaskListItemClicked(task) callbacks.onTaskListItemClicked(task)
} }

@ -319,15 +319,15 @@ class TaskEditViewModel @Inject constructor(
originalAlarms.toHashSet() != selectedAlarms.value.toHashSet() originalAlarms.toHashSet() != selectedAlarms.value.toHashSet()
@MainThread @MainThread
suspend fun save(): Boolean = withContext(NonCancellable) { suspend fun save(remove: Boolean = true): Boolean = withContext(NonCancellable) {
if (cleared) { if (cleared) {
return@withContext false return@withContext false
} }
if (!hasChanges()) { if (!hasChanges()) {
discard() discard(remove)
return@withContext false return@withContext false
} }
clear() clear(remove)
task.title = if (title.isNullOrBlank()) context.getString(R.string.no_title) else title task.title = if (title.isNullOrBlank()) context.getString(R.string.no_title) else title
task.dueDate = dueDate!! task.dueDate = dueDate!!
task.priority = priority!! task.priority = priority!!
@ -468,17 +468,20 @@ class TaskEditViewModel @Inject constructor(
discard() discard()
} }
suspend fun discard() { suspend fun discard(remove: Boolean = true) {
if (task.isNew) { if (task.isNew) {
timerPlugin.stopTimer(task) timerPlugin.stopTimer(task)
} }
clear() clear(remove)
} }
@MainThread @MainThread
suspend fun clear() { suspend fun clear(remove: Boolean = true) {
if (!cleared) { if (cleared) {
return
}
cleared = true cleared = true
if (remove) {
mainActivityEvents.emit(MainActivityEvent.ClearTaskEditFragment) mainActivityEvents.emit(MainActivityEvent.ClearTaskEditFragment)
} }
} }
@ -486,7 +489,7 @@ class TaskEditViewModel @Inject constructor(
override fun onCleared() { override fun onCleared() {
if (!cleared) { if (!cleared) {
runBlocking { runBlocking {
save() save(remove = false)
} }
} }
} }

Loading…
Cancel
Save