Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 8 additions & 44 deletions app/src/main/java/at/bitfire/icsdroid/calendar/LocalEvent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,54 +5,18 @@
package at.bitfire.icsdroid.calendar

import android.content.ContentValues
import android.provider.CalendarContract
import at.bitfire.ical4android.*
import at.bitfire.synctools.storage.BatchOperation
import net.fortuna.ical4j.model.DateTime
import net.fortuna.ical4j.model.property.LastModified
import at.bitfire.ical4android.AndroidCalendar
import at.bitfire.ical4android.AndroidEvent
import at.bitfire.ical4android.AndroidEventFactory
import at.bitfire.ical4android.Event

class LocalEvent: AndroidEvent {

companion object {
const val COLUMN_LAST_MODIFIED = CalendarContract.Events.SYNC_DATA2
}

var uid: String? = null
var lastModified = 0L

private constructor(calendar: AndroidCalendar<AndroidEvent>, values: ContentValues): super(calendar, values) {
uid = values.getAsString(CalendarContract.Events._SYNC_ID)
lastModified = values.getAsLong(COLUMN_LAST_MODIFIED) ?: 0
}

constructor(calendar: AndroidCalendar<AndroidEvent>, event: Event): super(calendar, event) {
uid = event.uid
lastModified = event.lastModified?.dateTime?.time ?: 0
}
constructor(calendar: AndroidCalendar<*>, event: Event)
: super(calendar, event, null, null, null, 0)

override fun populateEvent(row: ContentValues, groupScheduled: Boolean) {
super.populateEvent(row, groupScheduled)

val event = requireNotNull(event)
event.uid = row.getAsString(CalendarContract.Events._SYNC_ID)

row.getAsLong(COLUMN_LAST_MODIFIED).let {
lastModified = it
event.lastModified = LastModified(DateTime(it))
}
}

override fun buildEvent(recurrence: Event?, builder: BatchOperation.CpoBuilder) {
super.buildEvent(recurrence, builder)

if (recurrence == null) {
// master event
builder .withValue(CalendarContract.Events._SYNC_ID, uid)
.withValue(COLUMN_LAST_MODIFIED, lastModified)
} else
// exception
builder.withValue(CalendarContract.Events.ORIGINAL_SYNC_ID, uid)
}
private constructor(calendar: AndroidCalendar<*>, values: ContentValues)
: super(calendar, values)


object Factory: AndroidEventFactory<LocalEvent> {
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ androidx-test-rules = "1.7.0"
androidx-test-runner = "1.7.0"
androidx-work = "2.11.0"
bitfire-cert4android = "b6b7ef3f10"
bitfire-synctools = "366184ea7b"
bitfire-synctools = "d10d516883"
compose-dialogs = "1.3.0"
compose-material = "1.7.8"
compose-material3 = "1.4.0"
Expand Down