diff --git a/app/src/main/java/org/tasks/caldav/TaskConverter.java b/app/src/main/java/org/tasks/caldav/TaskConverter.java index 6dee687d6..eeb54da02 100644 --- a/app/src/main/java/org/tasks/caldav/TaskConverter.java +++ b/app/src/main/java/org/tasks/caldav/TaskConverter.java @@ -27,14 +27,19 @@ class TaskConverter { private static final DateFormat DUE_DATE_FORMAT = new SimpleDateFormat("yyyyMMdd", Locale.US); public static void apply(Task local, at.bitfire.ical4android.Task remote) { - if (remote.getCompletedAt() != null) { + Completed completedAt = remote.getCompletedAt(); + if (completedAt == null) { + local.setCompletionDate(0L); + } else { local.setCompletionDate(remote.getCompletedAt().getDate().getTime()); } local.setTitle(remote.getSummary()); local.setNotes(remote.getDescription()); local.setImportance(fromRemote(remote.getPriority())); RRule repeatRule = remote.getRRule(); - if (repeatRule != null) { + if (repeatRule == null) { + local.setRecurrence(""); + } else { Recur recur = repeatRule.getRecur(); if (recur.getInterval() == 0) { recur.setInterval(1); @@ -43,7 +48,9 @@ class TaskConverter { "RRULE:" + recur.toString() + (local.repeatAfterCompletion() ? ";FROM=COMPLETION" : "")); } Due due = remote.getDue(); - if (due != null) { + if (due == null) { + local.setDueDate(0L); + } else { Date dueDate = due.getDate(); if (dueDate instanceof DateTime) { local.setDueDate(Task.createDueDate(URGENCY_SPECIFIC_DAY_TIME, dueDate.getTime())); @@ -115,10 +122,11 @@ class TaskConverter { task.hasDueTime() ? new DateTime(task.getDueDate()) : new Date(new org.tasks.time.DateTime(task.getDueDate()).toUTC().getMillis()))); + } else { + remote.setDue(null); } - if (task.isCompleted()) { - remote.setCompletedAt(new Completed(new DateTime(task.getCompletionDate()))); - } + remote.setCompletedAt( + task.isCompleted() ? new Completed(new DateTime(task.getCompletionDate())) : null); if (task.isRecurring()) { try { String rrule = task.getRecurrenceWithoutFrom().replace("RRULE:", ""); @@ -126,6 +134,8 @@ class TaskConverter { } catch (ParseException e) { Timber.e(e); } + } else { + remote.setRRule(null); } remote.setLastModified(newDateTime(task.getModificationDate()).toUTC().getMillis()); remote.setPriority(toRemote(remote.getPriority(), task.getImportance()));