diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskMover.java b/app/src/main/java/com/todoroo/astrid/service/TaskMover.java index 6bb4378b6..05b50b636 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskMover.java +++ b/app/src/main/java/com/todoroo/astrid/service/TaskMover.java @@ -88,7 +88,7 @@ public class TaskMover { } public void migrateLocalTasks() { - CaldavCalendar list = caldavDao.setupLocalAccount(context); + CaldavCalendar list = caldavDao.getLocalList(context); move(taskDao.getLocalTasks(), new CaldavFilter(list)); } diff --git a/app/src/main/java/com/todoroo/astrid/service/Upgrader.kt b/app/src/main/java/com/todoroo/astrid/service/Upgrader.kt index b47a20dbd..34ac97c70 100644 --- a/app/src/main/java/com/todoroo/astrid/service/Upgrader.kt +++ b/app/src/main/java/com/todoroo/astrid/service/Upgrader.kt @@ -42,9 +42,7 @@ class Upgrader @Inject constructor( private val taskMover: TaskMover) { fun upgrade(from: Int, to: Int) { - if (from == 0) { - caldavDao.setupLocalAccount(context) - } else { + if (from > 0) { run(from, V4_9_5) { removeDuplicateTags() } run(from, V5_3_0) { migrateFilters() } run(from, V6_0_beta_1) { migrateDefaultSyncList() } diff --git a/app/src/main/java/org/tasks/data/CaldavDao.kt b/app/src/main/java/org/tasks/data/CaldavDao.kt index 7a2dc66e0..ce597a85c 100644 --- a/app/src/main/java/org/tasks/data/CaldavDao.kt +++ b/app/src/main/java/org/tasks/data/CaldavDao.kt @@ -245,28 +245,27 @@ abstract class CaldavDao { @Query("SELECT task.*, caldav_task.*, IFNULL(cd_order, (created - $APPLE_EPOCH) / 1000) AS primary_sort FROM caldav_tasks AS caldav_task INNER JOIN tasks AS task ON _id = cd_task WHERE cd_calendar = :calendar AND parent = :parent AND cd_deleted = 0 AND deleted = 0 AND primary_sort >= :from AND primary_sort < IFNULL(:to, ${Long.MAX_VALUE}) ORDER BY primary_sort") internal abstract fun getTasksToShift(calendar: String, parent: Long, from: Long, to: Long?): List - fun setupLocalAccount(context: Context): CaldavCalendar { - val account = getAccountByUuid(LOCAL) ?: createLocalAccount() - return getCalendarsByAccount(account.uuid!!).getOrElse(0) { - createLocalList(context, account) - } - } - - private fun createLocalAccount(): CaldavAccount { - val account = CaldavAccount() - account.accountType = CaldavAccount.TYPE_LOCAL - account.uuid = LOCAL - account.id = insert(account) + fun setupLocalAccount(context: Context): CaldavAccount { + val account = getLocalAccount() + getLocalList(context, account) return account } - private fun createLocalList(context: Context, account: CaldavAccount): CaldavCalendar { - val list = CaldavCalendar(context.getString(R.string.default_list), UUIDHelper.newUUID()) - list.account = account.uuid - insert(list) - return list + fun getLocalList(context: Context) = getLocalList(context, getLocalAccount()) + + private fun getLocalAccount() = getAccountByUuid(LOCAL) ?: CaldavAccount().apply { + accountType = CaldavAccount.TYPE_LOCAL + uuid = LOCAL + id = insert(this) } + private fun getLocalList(context: Context, account: CaldavAccount): CaldavCalendar = + getCalendarsByAccount(account.uuid!!).getOrNull(0) + ?: CaldavCalendar(context.getString(R.string.default_list), UUIDHelper.newUUID()).apply { + this.account = account.uuid + insert(this) + } + companion object { const val LOCAL = "local" } diff --git a/app/src/main/java/org/tasks/filters/FilterProvider.kt b/app/src/main/java/org/tasks/filters/FilterProvider.kt index b10fff15f..23eef4d3f 100644 --- a/app/src/main/java/org/tasks/filters/FilterProvider.kt +++ b/app/src/main/java/org/tasks/filters/FilterProvider.kt @@ -255,7 +255,9 @@ class FilterProvider @Inject constructor( private val caldavFilters: Set>> get() { - val accounts = caldavDao.getAccounts() + val accounts = caldavDao.getAccounts().ifEmpty { + listOf(caldavDao.setupLocalAccount(context)) + } val filters = LinkedHashMap>() for (account in accounts) { if (account.accountType == TYPE_LOCAL) {