moving event insert/update in Room
This commit is contained in:
parent
977b137a9b
commit
8cbbc2effe
|
@ -800,7 +800,7 @@ class EventActivity : SimpleActivity() {
|
||||||
showEditRepeatingEventDialog()
|
showEditRepeatingEventDialog()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dbHelper.update(mEvent, true, this) {
|
EventsHelper().updateEvent(applicationContext, this, mEvent, true) {
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -811,7 +811,7 @@ class EventActivity : SimpleActivity() {
|
||||||
EditRepeatingEventDialog(this) {
|
EditRepeatingEventDialog(this) {
|
||||||
if (it) {
|
if (it) {
|
||||||
Thread {
|
Thread {
|
||||||
dbHelper.update(mEvent, true, this) {
|
EventsHelper().updateEvent(applicationContext, this, mEvent, true) {
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}.start()
|
}.start()
|
||||||
|
|
|
@ -226,7 +226,7 @@ class CalDAVHandler(val context: Context) {
|
||||||
|
|
||||||
if (existingEvent.hashCode() != event.hashCode() && title.isNotEmpty()) {
|
if (existingEvent.hashCode() != event.hashCode() && title.isNotEmpty()) {
|
||||||
event.id = originalEventId
|
event.id = originalEventId
|
||||||
context.dbHelper.update(event, false)
|
EventsHelper().updateEvent(context, null, event, false)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// if the event is an exception from another events repeat rule, find the original parent event
|
// if the event is an exception from another events repeat rule, find the original parent event
|
||||||
|
|
|
@ -7,7 +7,6 @@ import android.database.sqlite.SQLiteDatabase
|
||||||
import android.database.sqlite.SQLiteOpenHelper
|
import android.database.sqlite.SQLiteOpenHelper
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import androidx.collection.LongSparseArray
|
import androidx.collection.LongSparseArray
|
||||||
import com.simplemobiletools.calendar.pro.activities.SimpleActivity
|
|
||||||
import com.simplemobiletools.calendar.pro.extensions.*
|
import com.simplemobiletools.calendar.pro.extensions.*
|
||||||
import com.simplemobiletools.calendar.pro.models.Event
|
import com.simplemobiletools.calendar.pro.models.Event
|
||||||
import com.simplemobiletools.calendar.pro.models.EventRepetitionException
|
import com.simplemobiletools.calendar.pro.models.EventRepetitionException
|
||||||
|
@ -60,45 +59,6 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
||||||
|
|
||||||
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {}
|
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {}
|
||||||
|
|
||||||
fun update(event: Event, updateAtCalDAV: Boolean, activity: SimpleActivity? = null, callback: (() -> Unit)? = null) {
|
|
||||||
val values = fillEventValues(event)
|
|
||||||
val selection = "$COL_ID = ?"
|
|
||||||
val selectionArgs = arrayOf(event.id.toString())
|
|
||||||
mDb.update(MAIN_TABLE_NAME, values, selection, selectionArgs)
|
|
||||||
|
|
||||||
if (event.repeatInterval == 0) {
|
|
||||||
context.eventRepetitionsDB.deleteEventRepetitionsOfEvent(event.id!!)
|
|
||||||
} else {
|
|
||||||
context.eventRepetitionsDB.insertOrUpdate(event.getEventRepetition())
|
|
||||||
}
|
|
||||||
|
|
||||||
context.updateWidgets()
|
|
||||||
context.scheduleNextEventReminder(event, this, activity)
|
|
||||||
if (updateAtCalDAV && event.source != SOURCE_SIMPLE_CALENDAR && context.config.caldavSync) {
|
|
||||||
CalDAVHandler(context).updateCalDAVEvent(event)
|
|
||||||
}
|
|
||||||
callback?.invoke()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun fillEventValues(event: Event): ContentValues {
|
|
||||||
return ContentValues().apply {
|
|
||||||
put(COL_START_TS, event.startTS)
|
|
||||||
put(COL_END_TS, event.endTS)
|
|
||||||
put(COL_TITLE, event.title)
|
|
||||||
put(COL_DESCRIPTION, event.description)
|
|
||||||
put(COL_REMINDER_MINUTES, event.reminder1Minutes)
|
|
||||||
put(COL_REMINDER_MINUTES_2, event.reminder2Minutes)
|
|
||||||
put(COL_REMINDER_MINUTES_3, event.reminder3Minutes)
|
|
||||||
put(COL_IMPORT_ID, event.importId)
|
|
||||||
put(COL_FLAGS, event.flags)
|
|
||||||
put(COL_EVENT_TYPE, event.eventType)
|
|
||||||
put(COL_PARENT_EVENT_ID, event.parentId)
|
|
||||||
put(COL_LAST_UPDATED, event.lastUpdated)
|
|
||||||
put(COL_EVENT_SOURCE, event.source)
|
|
||||||
put(COL_LOCATION, event.location)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun fillExceptionValues(parentEventId: Long, occurrenceTS: Int, addToCalDAV: Boolean, childImportId: String?, callback: (eventRepetitionException: EventRepetitionException) -> Unit) {
|
private fun fillExceptionValues(parentEventId: Long, occurrenceTS: Int, addToCalDAV: Boolean, childImportId: String?, callback: (eventRepetitionException: EventRepetitionException) -> Unit) {
|
||||||
val childEvent = getEventWithId(parentEventId) ?: return
|
val childEvent = getEventWithId(parentEventId) ?: return
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ class EventsHelper {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val id = context.eventsDB.insert(event)
|
val id = context.eventsDB.insertOrUpdate(event)
|
||||||
event.id = id
|
event.id = id
|
||||||
|
|
||||||
if (event.repeatInterval != 0 && event.parentId == 0L) {
|
if (event.repeatInterval != 0 && event.parentId == 0L) {
|
||||||
|
@ -102,7 +102,7 @@ class EventsHelper {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
val id = activity.eventsDB.insert(event)
|
val id = activity.eventsDB.insertOrUpdate(event)
|
||||||
event.id = id
|
event.id = id
|
||||||
|
|
||||||
if (event.repeatInterval != 0 && event.parentId == 0L) {
|
if (event.repeatInterval != 0 && event.parentId == 0L) {
|
||||||
|
@ -118,4 +118,21 @@ class EventsHelper {
|
||||||
activity.updateWidgets()
|
activity.updateWidgets()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun updateEvent(context: Context, activity: Activity? = null, event: Event, updateAtCalDAV: Boolean, callback: (() -> Unit)? = null) {
|
||||||
|
context.eventsDB.insertOrUpdate(event)
|
||||||
|
|
||||||
|
if (event.repeatInterval == 0) {
|
||||||
|
context.eventRepetitionsDB.deleteEventRepetitionsOfEvent(event.id!!)
|
||||||
|
} else {
|
||||||
|
context.eventRepetitionsDB.insertOrUpdate(event.getEventRepetition())
|
||||||
|
}
|
||||||
|
|
||||||
|
context.updateWidgets()
|
||||||
|
//context.scheduleNextEventReminder(event, this, activity)
|
||||||
|
if (updateAtCalDAV && event.source != SOURCE_SIMPLE_CALENDAR && context.config.caldavSync) {
|
||||||
|
CalDAVHandler(context).updateCalDAVEvent(event)
|
||||||
|
}
|
||||||
|
callback?.invoke()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,7 +167,7 @@ class IcsImporter(val activity: SimpleActivity) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
event.id = eventToUpdate.id
|
event.id = eventToUpdate.id
|
||||||
activity.dbHelper.update(event, true)
|
EventsHelper().updateEvent(activity, null, event, true)
|
||||||
}
|
}
|
||||||
eventsImported++
|
eventsImported++
|
||||||
resetValues()
|
resetValues()
|
||||||
|
|
|
@ -8,5 +8,5 @@ import com.simplemobiletools.calendar.pro.models.Event
|
||||||
@Dao
|
@Dao
|
||||||
interface EventsDao {
|
interface EventsDao {
|
||||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||||
fun insert(event: Event): Long
|
fun insertOrUpdate(event: Event): Long
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue