Fix batch rescheduling logic

pull/1194/head
Alex Baker 5 years ago
parent 9db74c728f
commit 60244ead3c

@ -87,8 +87,8 @@ class DateTimePicker : BottomSheetDialogFragment() {
bundle.putLongArray(EXTRA_TASKS, tasks.map { it.id }.toLongArray()) bundle.putLongArray(EXTRA_TASKS, tasks.map { it.id }.toLongArray())
val dueDates = tasks.map { it.dueDate.startOfDay() }.toSet() val dueDates = tasks.map { it.dueDate.startOfDay() }.toSet()
val dueTimes = tasks.map { it.dueDate.millisOfDay() }.toSet() val dueTimes = tasks.map { it.dueDate.millisOfDay() }.toSet()
bundle.putLong(EXTRA_DAY, if (dueDates.size == 1) dueDates.first() else -1) bundle.putLong(EXTRA_DAY, if (dueDates.size == 1) dueDates.first() else MULTIPLE_DAYS)
bundle.putInt(EXTRA_TIME, if (dueTimes.size == 1) dueTimes.first() else -1) bundle.putInt(EXTRA_TIME, if (dueTimes.size == 1) dueTimes.first() else MULTIPLE_TIMES)
bundle.putBoolean(EXTRA_AUTO_CLOSE, autoClose) bundle.putBoolean(EXTRA_AUTO_CLOSE, autoClose)
val fragment = DateTimePicker() val fragment = DateTimePicker()
fragment.arguments = bundle fragment.arguments = bundle
@ -129,7 +129,11 @@ class DateTimePicker : BottomSheetDialogFragment() {
binding.calendarView.firstDayOfWeek = firstDayOfWeek binding.calendarView.firstDayOfWeek = firstDayOfWeek
} }
selectedDay = savedInstanceState?.getLong(EXTRA_DAY) ?: requireArguments().getLong(EXTRA_DAY) selectedDay = savedInstanceState?.getLong(EXTRA_DAY) ?: requireArguments().getLong(EXTRA_DAY)
selectedTime = savedInstanceState?.getInt(EXTRA_TIME) ?: requireArguments().getInt(EXTRA_TIME) selectedTime =
savedInstanceState?.getInt(EXTRA_TIME)
?: requireArguments().getInt(EXTRA_TIME)
.takeIf { it == MULTIPLE_TIMES || Task.hasDueTime(it.toLong()) }
?: NO_TIME
return binding.root return binding.root
} }
@ -275,14 +279,26 @@ class DateTimePicker : BottomSheetDialogFragment() {
taskDao taskDao
.fetch(taskIds.toList()) .fetch(taskIds.toList())
.forEach { .forEach {
val day = if (selectedDay == MULTIPLE_DAYS) {
if (it.hasDueDate()) it.dueDate else today.millis
} else {
selectedDay
}
val time = if (selectedTime == MULTIPLE_TIMES) {
if (it.hasDueTime()) it.dueDate.millisOfDay() else NO_TIME
} else {
selectedTime
}
it.setDueDateAdjustingHideUntil(when { it.setDueDateAdjustingHideUntil(when {
selectedDay == MULTIPLE_DAYS -> day == NO_DAY -> 0L
it.dueDate.toDateTime().withMillisOfDay(selectedTime).millis time == NO_TIME -> Task.createDueDate(
selectedDay == NO_DAY -> 0L Task.URGENCY_SPECIFIC_DAY,
selectedTime == MULTIPLE_TIMES -> day
selectedDay.toDateTime().withMillisOfDay(it.dueDate.millisOfDay()).millis )
selectedTime == NO_TIME -> selectedDay else -> Task.createDueDate(
else -> selectedDay.toDateTime().withMillisOfDay(selectedTime).millis Task.URGENCY_SPECIFIC_DAY_TIME,
day.toDateTime().withMillisOfDay(time).millis
)
}) })
taskDao.save(it) taskDao.save(it)
} }

Loading…
Cancel
Save