Use task ids for widget click intents

pull/3881/head
Alex Baker 3 months ago
parent 4946b0ca06
commit 04ab41f622

@ -217,7 +217,7 @@ internal class TasksWidgetViewFactory(
R.id.widget_row, R.id.widget_row,
Intent(WidgetClickActivity.EDIT_TASK) Intent(WidgetClickActivity.EDIT_TASK)
.putExtra(WidgetClickActivity.EXTRA_FILTER, filter) .putExtra(WidgetClickActivity.EXTRA_FILTER, filter)
.putExtra(WidgetClickActivity.EXTRA_TASK, task) .putExtra(WidgetClickActivity.EXTRA_TASK_ID, task.id)
) )
if (settings.showCheckboxes) { if (settings.showCheckboxes) {
setViewPadding( setViewPadding(
@ -232,7 +232,8 @@ internal class TasksWidgetViewFactory(
setOnClickFillInIntent( setOnClickFillInIntent(
R.id.widget_complete_box, R.id.widget_complete_box,
Intent(WidgetClickActivity.COMPLETE_TASK) Intent(WidgetClickActivity.COMPLETE_TASK)
.putExtra(WidgetClickActivity.EXTRA_TASK, task) .putExtra(WidgetClickActivity.EXTRA_TASK_ID, task.id)
.putExtra(WidgetClickActivity.EXTRA_COMPLETED, !task.isCompleted)
) )
} else { } else {
setViewPadding(R.id.widget_complete_box, hPad, 0, 0, 0) setViewPadding(R.id.widget_complete_box, hPad, 0, 0, 0)
@ -250,7 +251,7 @@ internal class TasksWidgetViewFactory(
setOnClickFillInIntent( setOnClickFillInIntent(
R.id.chip, R.id.chip,
Intent(WidgetClickActivity.TOGGLE_SUBTASKS) Intent(WidgetClickActivity.TOGGLE_SUBTASKS)
.putExtra(WidgetClickActivity.EXTRA_TASK, task) .putExtra(WidgetClickActivity.EXTRA_TASK_ID, task.id)
.putExtra( .putExtra(
WidgetClickActivity.EXTRA_COLLAPSED, WidgetClickActivity.EXTRA_COLLAPSED,
!taskContainer.isCollapsed !taskContainer.isCollapsed
@ -332,11 +333,10 @@ internal class TasksWidgetViewFactory(
setOnClickFillInIntent( setOnClickFillInIntent(
dueDateRes, dueDateRes,
Intent(WidgetClickActivity.RESCHEDULE_TASK) Intent(WidgetClickActivity.RESCHEDULE_TASK)
.putExtra(WidgetClickActivity.EXTRA_TASK, task.task) .putExtra(WidgetClickActivity.EXTRA_TASK_ID, task.id)
) )
} else { } else {
setViewVisibility(dueDateRes, View.GONE) setViewVisibility(dueDateRes, View.GONE)
} }
} }
} }

@ -9,10 +9,9 @@ import com.todoroo.astrid.service.TaskCompleter
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.tasks.broadcast.RefreshBroadcaster
import org.tasks.R import org.tasks.R
import org.tasks.analytics.Firebase import org.tasks.analytics.Firebase
import org.tasks.data.entity.Task import org.tasks.broadcast.RefreshBroadcaster
import org.tasks.dialogs.BaseDateTimePicker.OnDismissHandler import org.tasks.dialogs.BaseDateTimePicker.OnDismissHandler
import org.tasks.dialogs.DateTimePicker.Companion.newDateTimePicker import org.tasks.dialogs.DateTimePicker.Companion.newDateTimePicker
import org.tasks.filters.Filter import org.tasks.filters.Filter
@ -34,28 +33,37 @@ class WidgetClickActivity : AppCompatActivity(), OnDismissHandler {
val intent = intent val intent = intent
val action = intent.action val action = intent.action
if (action.isNullOrEmpty()) { if (action.isNullOrEmpty()) {
finish()
return return
} }
when (action) { when (action) {
COMPLETE_TASK -> { COMPLETE_TASK -> {
val task = task val taskId = intent.getLongExtra(EXTRA_TASK_ID, 0L)
Timber.tag("$action task=$task") val completed = intent.getBooleanExtra(EXTRA_COMPLETED, false)
lifecycleScope.launch(NonCancellable) { Timber.tag("$action taskId=$taskId completed=$completed")
taskCompleter.setComplete(task, !task.isCompleted) if (taskId > 0) {
firebase.completeTask("widget") lifecycleScope.launch(NonCancellable) {
taskCompleter.setComplete(taskId, completed)
firebase.completeTask("widget")
}
} }
finish() finish()
} }
EDIT_TASK -> { EDIT_TASK -> {
val filter = intent.getParcelableExtra<Filter?>(EXTRA_FILTER) val filter = intent.getParcelableExtra<Filter?>(EXTRA_FILTER)
val task = task val taskId = intent.getLongExtra(EXTRA_TASK_ID, 0L)
Timber.tag("$action task=$task filter=$filter") Timber.tag("$action taskId=$taskId filter=$filter")
startActivity( lifecycleScope.launch {
TaskIntents if (taskId > 0) {
.getEditTaskIntent(this, filter, task) val task = taskDao.fetch(taskId)
.putExtra(FINISH_AFFINITY, true) startActivity(
) TaskIntents
finish() .getEditTaskIntent(this@WidgetClickActivity, filter, task)
.putExtra(FINISH_AFFINITY, true)
)
}
finish()
}
} }
OPEN_TASK_LIST -> { OPEN_TASK_LIST -> {
val filter = intent.getParcelableExtra<Filter?>(EXTRA_FILTER) val filter = intent.getParcelableExtra<Filter?>(EXTRA_FILTER)
@ -68,23 +76,36 @@ class WidgetClickActivity : AppCompatActivity(), OnDismissHandler {
finish() finish()
} }
TOGGLE_SUBTASKS -> { TOGGLE_SUBTASKS -> {
val task = task val taskId = intent.getLongExtra(EXTRA_TASK_ID, 0L)
val collapsed = intent.getBooleanExtra(EXTRA_COLLAPSED, false) val collapsed = intent.getBooleanExtra(EXTRA_COLLAPSED, false)
Timber.d("$action collapsed=$collapsed task=$task") Timber.d("$action collapsed=$collapsed taskId=$taskId")
lifecycleScope.launch(NonCancellable) { if (taskId > 0) {
taskDao.setCollapsed(task.id, collapsed) lifecycleScope.launch(NonCancellable) {
taskDao.setCollapsed(taskId, collapsed)
}
} }
finish() finish()
} }
RESCHEDULE_TASK -> { RESCHEDULE_TASK -> {
val task = task val taskId = intent.getLongExtra(EXTRA_TASK_ID, 0L)
Timber.d("$action task=$task") Timber.d("$action taskId=$taskId")
val fragmentManager = supportFragmentManager val fragmentManager = supportFragmentManager
if (fragmentManager.findFragmentByTag(FRAG_TAG_DATE_TIME_PICKER) == null) { if (fragmentManager.findFragmentByTag(FRAG_TAG_DATE_TIME_PICKER) == null) {
newDateTimePicker( lifecycleScope.launch {
preferences.getBoolean(R.string.p_auto_dismiss_datetime_widget, false), val task = taskDao.fetch(taskId)
task) if (task != null) {
.show(fragmentManager, FRAG_TAG_DATE_TIME_PICKER) newDateTimePicker(
preferences.getBoolean(
R.string.p_auto_dismiss_datetime_widget,
false
),
task
)
.show(fragmentManager, FRAG_TAG_DATE_TIME_PICKER)
} else {
finish()
}
}
} }
} }
TOGGLE_GROUP -> { TOGGLE_GROUP -> {
@ -106,13 +127,11 @@ class WidgetClickActivity : AppCompatActivity(), OnDismissHandler {
} }
else -> { else -> {
Timber.e("Unknown action $action") Timber.e("Unknown action $action")
finish()
} }
} }
} }
val task: Task
get() = intent.getParcelableExtra(EXTRA_TASK)!!
override fun onDismiss() { override fun onDismiss() {
finish() finish()
} }
@ -125,8 +144,9 @@ class WidgetClickActivity : AppCompatActivity(), OnDismissHandler {
const val RESCHEDULE_TASK = "RESCHEDULE_TASK" const val RESCHEDULE_TASK = "RESCHEDULE_TASK"
const val TOGGLE_GROUP = "TOGGLE_GROUP" const val TOGGLE_GROUP = "TOGGLE_GROUP"
const val EXTRA_FILTER = "extra_filter" const val EXTRA_FILTER = "extra_filter"
const val EXTRA_TASK = "extra_task" // $NON-NLS-1$ const val EXTRA_TASK_ID = "extra_task_id"
const val EXTRA_COLLAPSED = "extra_collapsed" const val EXTRA_COLLAPSED = "extra_collapsed"
const val EXTRA_COMPLETED = "extra_completed"
const val EXTRA_GROUP = "extra_group" const val EXTRA_GROUP = "extra_group"
const val EXTRA_WIDGET = "extra_widget" const val EXTRA_WIDGET = "extra_widget"
private const val FRAG_TAG_DATE_TIME_PICKER = "frag_tag_date_time_picker" private const val FRAG_TAG_DATE_TIME_PICKER = "frag_tag_date_time_picker"

Loading…
Cancel
Save