Add TaskEditEventBus

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

@ -36,6 +36,8 @@ import com.todoroo.astrid.timers.TimerPlugin
import com.todoroo.astrid.ui.StartDateControlSet
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.tasks.R
@ -57,6 +59,8 @@ import org.tasks.notifications.NotificationManager
import org.tasks.preferences.Preferences
import org.tasks.ui.SubtaskControlSet
import org.tasks.ui.TaskEditControlFragment
import org.tasks.ui.TaskEditEvent
import org.tasks.ui.TaskEditEventBus
import org.tasks.ui.TaskEditViewModel
import javax.inject.Inject
import kotlin.math.abs
@ -75,6 +79,7 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener {
@Inject lateinit var timerPlugin: TimerPlugin
@Inject lateinit var linkify: Linkify
@Inject lateinit var markdownProvider: MarkdownProvider
@Inject lateinit var taskEditEventBus: TaskEditEventBus
private val linkifyEnabled: Boolean
get() = preferences.getBoolean(R.string.p_linkify_task_edit, false)
@ -210,9 +215,25 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener {
for (i in visibleSize - 1 downTo 1) {
binding.controlSets.addView(inflater.inflate(R.layout.task_edit_row_divider, binding.controlSets, false), i)
}
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
taskEditEventBus
.onEach(this::process)
.launchIn(viewLifecycleOwner.lifecycleScope)
}
private suspend fun process(event: TaskEditEvent) {
when (event) {
is TaskEditEvent.Discard ->
if (event.id == editViewModel.task.id) {
editViewModel.discard()
}
}
}
override fun onResume() {
super.onResume()

@ -110,8 +110,10 @@ import org.tasks.tasklist.TaskViewHolder
import org.tasks.tasklist.ViewHolderFactory
import org.tasks.themes.ColorProvider
import org.tasks.themes.ThemeColor
import org.tasks.ui.TaskListEventBus
import org.tasks.ui.TaskEditEvent
import org.tasks.ui.TaskEditEventBus
import org.tasks.ui.TaskListEvent
import org.tasks.ui.TaskListEventBus
import org.tasks.ui.TaskListViewModel
import java.time.format.FormatStyle
import javax.inject.Inject
@ -147,7 +149,8 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
@Inject lateinit var locale: Locale
@Inject lateinit var firebase: Firebase
@Inject lateinit var repeatTaskHelper: RepeatTaskHelper
@Inject lateinit var eventBus: TaskListEventBus
@Inject lateinit var taskListEventBus: TaskListEventBus
@Inject lateinit var taskEditEventBus: TaskEditEventBus
private lateinit var swipeRefreshLayout: SwipeRefreshLayout
private lateinit var emptyRefreshLayout: SwipeRefreshLayout
@ -282,7 +285,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.RESUMED) {
eventBus.collect(this@TaskListFragment::process)
taskListEventBus.collect(this@TaskListFragment::process)
}
}
@ -569,18 +572,14 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
loadTaskListContent()
}
fun onTaskCreated(uuid: String) {
private fun onTaskCreated(uuid: String) {
lifecycleScope.launch {
taskAdapter.onTaskCreated(uuid)
}
}
private suspend fun onTaskDelete(task: Task) {
(activity as MainActivity?)?.taskEditFragment?.let {
if (task.id == it.editViewModel.task?.id) {
it.editViewModel.discard()
}
}
taskEditEventBus.emit(TaskEditEvent.Discard(task.id))
timerPlugin.stopTimer(task)
taskAdapter.onTaskDeleted(task)
loadTaskListContent()

@ -8,6 +8,7 @@ import dagger.hilt.android.scopes.ActivityRetainedScoped
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.flow.MutableSharedFlow
import org.tasks.ui.MainActivityEventBus
import org.tasks.ui.TaskEditEventBus
import org.tasks.ui.TaskListEventBus
@Module
@ -21,6 +22,10 @@ class ActivityRetainedModule {
@ActivityRetainedScoped
fun getMainActivityBus(): MainActivityEventBus = makeFlow()
@Provides
@ActivityRetainedScoped
fun getTaskEditBus(): TaskEditEventBus = makeFlow()
private fun <T> makeFlow() = MutableSharedFlow<T>(
extraBufferCapacity = 1,
onBufferOverflow = BufferOverflow.DROP_OLDEST

@ -0,0 +1,9 @@
package org.tasks.ui
import kotlinx.coroutines.flow.MutableSharedFlow
typealias TaskEditEventBus = MutableSharedFlow<TaskEditEvent>
sealed interface TaskEditEvent {
data class Discard(val id: Long) : TaskEditEvent
}
Loading…
Cancel
Save