Fix all-day CalDAV event import for local TZ > GMT+5
This commit is contained in:
parent
845489a8f3
commit
5074861f3f
|
@ -234,18 +234,6 @@ class CalDAVHandler(val context: Context) {
|
|||
val originalInstanceTime = cursor.getLongValue(CalendarContract.Events.ORIGINAL_INSTANCE_TIME)
|
||||
val reminders = getCalDAVEventReminders(id)
|
||||
|
||||
// make sure all-day events start at 5am in the users timezone
|
||||
if (allDay == 1 && timeZone == "UTC") {
|
||||
val offset = DateTimeZone.getDefault().getOffset(System.currentTimeMillis()) / 1000
|
||||
val FIVE_HOURS = 5 * 60 * 60
|
||||
startTS -= offset
|
||||
startTS += FIVE_HOURS
|
||||
if (endTS != 0) {
|
||||
endTS -= offset
|
||||
endTS += FIVE_HOURS
|
||||
}
|
||||
}
|
||||
|
||||
if (endTS == 0) {
|
||||
val duration = cursor.getStringValue(CalendarContract.Events.DURATION) ?: ""
|
||||
endTS = startTS + Parser().parseDurationSeconds(duration)
|
||||
|
@ -258,11 +246,13 @@ class CalDAVHandler(val context: Context) {
|
|||
reminders.getOrElse(1, { -1 }), reminders.getOrElse(2, { -1 }), repeatRule.repeatInterval,
|
||||
importId, allDay, repeatRule.repeatLimit, repeatRule.repeatRule, eventTypeId, source = source, location = location)
|
||||
|
||||
if (event.getIsAllDay() && endTS > startTS) {
|
||||
if (event.getIsAllDay()) {
|
||||
event.startTS = Formatter.getShiftedImportTimestamp(event.startTS)
|
||||
event.endTS = Formatter.getShiftedImportTimestamp(event.endTS)
|
||||
if (event.endTS > event.startTS) {
|
||||
event.endTS -= DAY
|
||||
}
|
||||
}
|
||||
|
||||
fetchedEventIds.add(importId)
|
||||
if (importIdsMap.containsKey(event.importId)) {
|
||||
|
|
|
@ -100,5 +100,5 @@ object Formatter {
|
|||
"0"
|
||||
}
|
||||
|
||||
fun getShiftedImportTimestamp(ts: Int) = getDateTimeFromTS(ts).toDateTime(DateTimeZone.UTC).withZoneRetainFields(DateTimeZone.getDefault()).withTime(5, 0, 0, 0).seconds()
|
||||
fun getShiftedImportTimestamp(ts: Int) = getDateTimeFromTS(ts).withTime(5, 0, 0, 0).seconds()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue