duePickerAction method

Future<void> duePickerAction(
  1. dynamic context,
  2. dynamic task
)

Implementation

Future<void> duePickerAction(BuildContext context, Task task) async {
  final newDue = await showDuePicker(
    context: context,
    initialDate: task.dueDate() != null
        ? DateTime.parse(task.dueDate()!)
        : DateTime.now(),
  );
  if (!context.mounted) return;
  if (newDue == null) return;
  EasyLoading.show(status: L10n.of(context).updatingDue);
  try {
    final updater = task.updateBuilder();
    updater.dueDate(newDue.due.year, newDue.due.month, newDue.due.day);
    if (newDue.includeTime) {
      final seconds = newDue.due.hour * 60 * 60 +
          newDue.due.minute * 60 +
          newDue.due.second;
      // adapt the timezone value
      updater.utcDueTimeOfDay(seconds + newDue.due.timeZoneOffset.inSeconds);
    } else if (task.utcDueTimeOfDay() != null) {
      // we have one, we need to reset it
      updater.unsetUtcDueTimeOfDay();
    }
    await updater.send();
    if (!context.mounted) {
      EasyLoading.dismiss();
      return;
    }
    EasyLoading.showToast(L10n.of(context).dueSuccess);
  } catch (e, s) {
    _log.severe('Failed to change due date of task', e, s);
    if (!context.mounted) {
      EasyLoading.dismiss();
      return;
    }
    EasyLoading.showError(
      L10n.of(context).updatingDueFailed(e),
      duration: const Duration(seconds: 3),
    );
  }
}