From 99e624e8368a456e091275d15efe9ae627be92e0 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 5 Mar 2021 10:56:26 -0600 Subject: [PATCH] Apply tz offset when converting to ical4j Date --- .../astrid/repeats/RepeatTaskHelper.kt | 2 +- .../main/java/org/tasks/caldav/iCalendar.kt | 9 +++---- .../main/java/org/tasks/time/DateTime.java | 26 ++++++++++--------- .../main/java/org/tasks/time/DateTimeUtils.kt | 2 ++ 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/repeats/RepeatTaskHelper.kt b/app/src/main/java/com/todoroo/astrid/repeats/RepeatTaskHelper.kt index 946a2bb66..752d66325 100644 --- a/app/src/main/java/com/todoroo/astrid/repeats/RepeatTaskHelper.kt +++ b/app/src/main/java/com/todoroo/astrid/repeats/RepeatTaskHelper.kt @@ -205,7 +205,7 @@ class RepeatTaskHelper @Inject constructor( return if (task.hasDueTime()) { startDate.toDateTime() } else { - Date(startDate.millis + startDate.offset) + startDate.toDate() } } diff --git a/app/src/main/java/org/tasks/caldav/iCalendar.kt b/app/src/main/java/org/tasks/caldav/iCalendar.kt index ef91a805c..52befc099 100644 --- a/app/src/main/java/org/tasks/caldav/iCalendar.kt +++ b/app/src/main/java/org/tasks/caldav/iCalendar.kt @@ -32,6 +32,7 @@ import org.tasks.repeats.RecurrenceUtils.newRecur import org.tasks.time.DateTime.UTC import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.time.DateTimeUtils.startOfMinute +import org.tasks.time.DateTimeUtils.toDate import timber.log.Timber import java.io.ByteArrayOutputStream import java.io.StringReader @@ -339,12 +340,12 @@ class iCalendar @Inject constructor( } due = if (dueDate > 0) { startDate = min(dueDate, startDate) - Due(if (allDay) getDate(dueDate) else getDateTime(dueDate)) + Due(if (allDay) dueDate.toDate() else getDateTime(dueDate)) } else { null } dtStart = if (startDate > 0) { - DtStart(if (allDay) getDate(startDate) else getDateTime(startDate)) + DtStart(if (allDay) startDate.toDate() else getDateTime(startDate)) } else { null } @@ -388,10 +389,6 @@ class iCalendar @Inject constructor( snooze = task.reminderSnooze } - private fun getDate(timestamp: Long): Date { - return Date(timestamp + newDateTime(timestamp).offset) - } - private fun getDateTime(timestamp: Long): DateTime { val tz = ical4jTimeZone(TimeZone.getDefault().id) val dateTime = DateTime(if (tz != null) timestamp else org.tasks.time.DateTime(timestamp).toUTC().millis) diff --git a/app/src/main/java/org/tasks/time/DateTime.java b/app/src/main/java/org/tasks/time/DateTime.java index dceedd807..c72364741 100644 --- a/app/src/main/java/org/tasks/time/DateTime.java +++ b/app/src/main/java/org/tasks/time/DateTime.java @@ -1,14 +1,8 @@ package org.tasks.time; -import static com.todoroo.astrid.core.SortHelper.APPLE_EPOCH; -import static java.util.Calendar.FRIDAY; -import static java.util.Calendar.MONDAY; -import static java.util.Calendar.SATURDAY; -import static java.util.Calendar.SUNDAY; -import static java.util.Calendar.THURSDAY; -import static java.util.Calendar.TUESDAY; -import static java.util.Calendar.WEDNESDAY; -import static org.tasks.time.DateTimeUtils.currentTimeMillis; +import net.fortuna.ical4j.model.WeekDay; + +import org.tasks.locale.Locale; import java.text.SimpleDateFormat; import java.time.LocalDate; @@ -19,8 +13,16 @@ import java.util.GregorianCalendar; import java.util.Objects; import java.util.TimeZone; import java.util.concurrent.TimeUnit; -import net.fortuna.ical4j.model.WeekDay; -import org.tasks.locale.Locale; + +import static com.todoroo.astrid.core.SortHelper.APPLE_EPOCH; +import static java.util.Calendar.FRIDAY; +import static java.util.Calendar.MONDAY; +import static java.util.Calendar.SATURDAY; +import static java.util.Calendar.SUNDAY; +import static java.util.Calendar.THURSDAY; +import static java.util.Calendar.TUESDAY; +import static java.util.Calendar.WEDNESDAY; +import static org.tasks.time.DateTimeUtils.currentTimeMillis; public class DateTime { @@ -357,7 +359,7 @@ public class DateTime { } public net.fortuna.ical4j.model.Date toDate() { - return timestamp == 0 ? null : new net.fortuna.ical4j.model.Date(timestamp); + return timestamp == 0 ? null : new net.fortuna.ical4j.model.Date(timestamp + getOffset()); } public LocalDate toLocalDate() { diff --git a/app/src/main/java/org/tasks/time/DateTimeUtils.kt b/app/src/main/java/org/tasks/time/DateTimeUtils.kt index 9f5f72237..023da168c 100644 --- a/app/src/main/java/org/tasks/time/DateTimeUtils.kt +++ b/app/src/main/java/org/tasks/time/DateTimeUtils.kt @@ -40,4 +40,6 @@ object DateTimeUtils { fun Long.startOfMinute(): Long = if (this > 0) toDateTime().startOfMinute().millis else 0 fun Long.millisOfDay(): Int = if (this > 0) toDateTime().millisOfDay else 0 + + fun Long.toDate(): net.fortuna.ical4j.model.Date? = this.toDateTime().toDate() } \ No newline at end of file