Handle exceptions when event/task SEQUENCE is increased; update ical4android

This commit is contained in:
Ricki Hirner 2020-05-05 14:46:51 +02:00
parent fa1ed29659
commit 1b0720d798
4 changed files with 23 additions and 14 deletions

View file

@ -117,12 +117,16 @@ class LocalCalendar private constructor(
// get dirty events which are required to have an increased SEQUENCE value
for (localEvent in queryEvents("${Events.DIRTY} AND ${Events.ORIGINAL_ID} IS NULL", null)) {
val event = localEvent.event!!
val sequence = event.sequence
if (event.sequence == null) // sequence has not been assigned yet (i.e. this event was just locally created)
event.sequence = 0
else if (localEvent.weAreOrganizer)
event.sequence = sequence!! + 1
try {
val event = requireNotNull(localEvent.event)
val sequence = event.sequence
if (sequence == null) // sequence has not been assigned yet (i.e. this event was just locally created)
event.sequence = 0
else if (localEvent.weAreOrganizer) // increase sequence only if we're the organizer (i.e. not for attendee changes)
event.sequence = sequence + 1
} catch(e: Exception) {
Logger.log.log(Level.WARNING, "Couldn't check/increase sequence", e)
}
dirty += localEvent
}

View file

@ -52,7 +52,6 @@ class LocalEvent: AndroidEvent, LocalResource<Event> {
}
override fun populateEvent(row: ContentValues) {
super.populateEvent(row)
val event = requireNotNull(event)
event.uid = row.getAsString(Events.UID_2445)
@ -60,6 +59,8 @@ class LocalEvent: AndroidEvent, LocalResource<Event> {
val isOrganizer = row.getAsInteger(Events.IS_ORGANIZER)
weAreOrganizer = isOrganizer != null && isOrganizer != 0
super.populateEvent(row)
}
override fun buildEvent(recurrence: Event?, builder: ContentProviderOperation.Builder) {

View file

@ -125,12 +125,16 @@ class LocalTaskList private constructor(
override fun findDirty(): List<LocalTask> {
val tasks = queryTasks(Tasks._DIRTY, null)
for (localTask in tasks) {
val task = requireNotNull(localTask.task)
val sequence = task.sequence
if (sequence == null) // sequence has not been assigned yet (i.e. this task was just locally created)
task.sequence = 0
else
task.sequence = sequence + 1
try {
val task = requireNotNull(localTask.task)
val sequence = task.sequence
if (sequence == null) // sequence has not been assigned yet (i.e. this task was just locally created)
task.sequence = 0
else // task was modified, increase sequence
task.sequence = sequence + 1
} catch(e: Exception) {
Logger.log.log(Level.WARNING, "Couldn't check/increase sequence", e)
}
}
return tasks
}

@ -1 +1 @@
Subproject commit 0a87bb5a54b2ad5966509ab63f74a29dde789bc4
Subproject commit ef153fc01c2f41f1c42d470cf1df20210d90d1ac