Calendar UID derived from _sync_id

pull/1074/head
Alex Baker 4 years ago
parent 1c122b9e1f
commit a759f1bd8c

@ -13,7 +13,6 @@ import com.todoroo.astrid.service.Upgrader.Companion.getAndroidColor
import org.tasks.LocalBroadcastManager
import org.tasks.R
import org.tasks.data.*
import org.tasks.data.CaldavAccount.Companion.TYPE_LOCAL
import org.tasks.data.Place.Companion.newPlace
import org.tasks.preferences.Preferences
import timber.log.Timber
@ -100,17 +99,10 @@ class TasksJsonImporter @Inject constructor(
}
}
backupContainer.caldavCalendars?.forEach { calendar ->
val account = caldavDao.getAccountByUuid(calendar.account!!)!!
when (account.accountType) {
TYPE_LOCAL -> if (caldavDao.getCalendarByUuid(calendar.uuid!!) != null) {
return@forEach
}
else -> if (caldavDao.getCalendarByUrl(calendar.account!!, calendar.url!!) != null) {
return@forEach
}
if (caldavDao.getCalendarByUuid(calendar.uuid!!) == null) {
calendar.color = themeToColor(context, version, calendar.color)
caldavDao.insert(calendar)
}
calendar.color = themeToColor(context, version, calendar.color)
caldavDao.insert(calendar)
}
backupContainer.taskListMetadata?.forEach { tlm ->
val id = tlm.filter.takeIf { it?.isNotBlank() == true } ?: tlm.tagUuid!!
@ -130,14 +122,12 @@ class TasksJsonImporter @Inject constructor(
result.skipCount++
return@forEach
}
backup.caldavTasks
?.filter { it.deleted == 0L }
?.any { caldavDao.getCalendar(it.calendar!!) == null }
?.takeIf { it }
?.let {
result.skipCount++
return@forEach
}
if (true == backup.caldavTasks
?.filter { it.deleted == 0L }
?.any { caldavDao.getTask(it.calendar!!, it.`object`!!) != null }) {
result.skipCount++
return@forEach
}
task.suppressRefresh()
task.suppressSync()
taskDao.createNew(task)

@ -91,7 +91,7 @@ class CaldavAccount : Parcelable {
get() = accountType == TYPE_OPENTASKS
val isOpenTaskEteSync: Boolean
get() = uuid?.split(":")?.get(0) == ACCOUNT_TYPE_ETESYNC
get() = uuid.openTaskType() == ACCOUNT_TYPE_ETESYNC
fun listSettingsClass(): Class<out BaseListSettingsActivity> = when(accountType) {
TYPE_ETESYNC -> EteSyncCalendarSettingsActivity::class.java
@ -160,6 +160,8 @@ class CaldavAccount : Parcelable {
const val TYPE_LOCAL = 2
const val TYPE_OPENTASKS = 3
fun String?.openTaskType(): String? = this?.split(":")?.get(0)
@JvmField val CREATOR: Parcelable.Creator<CaldavAccount> = object : Parcelable.Creator<CaldavAccount> {
override fun createFromParcel(source: Parcel): CaldavAccount? {
return CaldavAccount(source)

@ -10,7 +10,6 @@ import com.todoroo.astrid.data.Task
import com.todoroo.astrid.data.Task.Companion.URGENCY_SPECIFIC_DAY
import com.todoroo.astrid.data.Task.Companion.URGENCY_SPECIFIC_DAY_TIME
import com.todoroo.astrid.data.Task.Companion.sanitizeRRule
import com.todoroo.astrid.helper.UUIDHelper
import com.todoroo.astrid.service.TaskCreator
import com.todoroo.astrid.service.TaskDeleter
import dagger.hilt.android.qualifiers.ApplicationContext
@ -26,6 +25,7 @@ import org.tasks.caldav.CaldavConverter
import org.tasks.caldav.CaldavConverter.toRemote
import org.tasks.caldav.iCalendar
import org.tasks.data.*
import org.tasks.data.CaldavAccount.Companion.openTaskType
import org.tasks.data.OpenTaskDao.Companion.getInt
import org.tasks.data.OpenTaskDao.Companion.getLong
import org.tasks.data.OpenTaskDao.Companion.getString
@ -77,11 +77,12 @@ class OpenTasksSynchronizer @Inject constructor(
}
private suspend fun sync(account: CaldavAccount, lists: List<CaldavCalendar>) {
val uuid = account.uuid!!
caldavDao
.findDeletedCalendars(account.uuid!!, lists.mapNotNull { it.url })
.findDeletedCalendars(uuid, lists.mapNotNull { it.url })
.forEach { taskDeleter.delete(it) }
lists.forEach {
val calendar = toLocalCalendar(account.uuid!!, it)
val calendar = toLocalCalendar(uuid, it)
sync(account, calendar, it.ctag, it.id)
}
setError(account, null)
@ -89,7 +90,9 @@ class OpenTasksSynchronizer @Inject constructor(
private suspend fun toLocalCalendar(account: String, remote: CaldavCalendar): CaldavCalendar {
val local = caldavDao.getCalendarByUrl(account, remote.url!!) ?: CaldavCalendar().apply {
uuid = UUIDHelper.newUUID()
uuid = UUID
.nameUUIDFromBytes("${account.openTaskType()}${remote.url}".toByteArray())
.toString()
url = remote.url
this.account = account
caldavDao.insert(this)

Loading…
Cancel
Save