Add ClearTaskEditFragment event

pull/1823/head
Alex Baker 2 years ago
parent 2c96e6ef29
commit b087cc090f

@ -113,6 +113,8 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
onTaskListItemClicked(event.task)
is MainActivityEvent.RequestRating ->
playServices.requestReview(this)
is MainActivityEvent.ClearTaskEditFragment ->
removeTaskEditFragment()
}
public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
@ -353,7 +355,6 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
return
}
taskEditFragment?.let {
it.editViewModel.cleared.removeObservers(this@MainActivity)
it.save()
}
clearUi()
@ -419,7 +420,7 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
private val isSinglePaneLayout: Boolean
get() = !resources.getBoolean(R.bool.two_pane_layout)
fun removeTaskEditFragment() {
private fun removeTaskEditFragment() {
val removeTask = intent.removeTask
val finishAffinity = intent.finishAffinity
if (finishAffinity || taskListFragment == null) {

@ -96,10 +96,6 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener {
args.getParcelableArrayList(EXTRA_ALARMS)!!
)
}
val activity = requireActivity() as MainActivity
editViewModel.cleared.observe(activity) {
activity.removeTaskEditFragment()
}
}
override fun onCreateView(

@ -8,5 +8,6 @@ typealias MainActivityEventBus = MutableSharedFlow<MainActivityEvent>
sealed interface MainActivityEvent {
data class OpenTask(val task: Task) : MainActivityEvent
object RequestRating : MainActivityEvent
object ClearTaskEditFragment : MainActivityEvent
}

@ -2,7 +2,6 @@ package org.tasks.ui
import android.content.Context
import androidx.annotation.MainThread
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.alarms.AlarmService
@ -30,7 +29,6 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import net.fortuna.ical4j.model.Recur
import org.tasks.Event
import org.tasks.R
import org.tasks.Strings
import org.tasks.calendars.CalendarEventProvider
@ -85,7 +83,7 @@ class TaskEditViewModel @Inject constructor(
private val mainActivityEvents: MainActivityEventBus,
) : ViewModel() {
val cleared = MutableLiveData<Event<Boolean>>()
private var cleared = false
fun setup(
task: Task,
@ -320,11 +318,9 @@ class TaskEditViewModel @Inject constructor(
} ||
originalAlarms.toHashSet() != selectedAlarms.value.toHashSet()
fun cleared() = cleared.value?.value == true
@MainThread
suspend fun save() = withContext(NonCancellable) {
if (cleared()) {
if (cleared) {
return@withContext
}
if (!hasChanges()) {
@ -479,18 +475,17 @@ class TaskEditViewModel @Inject constructor(
}
@MainThread
fun clear() {
if (!cleared()) {
cleared.value = Event(true)
suspend fun clear() {
if (!cleared) {
cleared = true
mainActivityEvents.emit(MainActivityEvent.ClearTaskEditFragment)
}
}
override fun onCleared() {
cleared.value.let {
if (it == null || !it.value) {
runBlocking {
save()
}
if (!cleared) {
runBlocking {
save()
}
}
}

Loading…
Cancel
Save