Update filters when restoring backup

pull/2294/head
Alex Baker 1 year ago
parent 067317b5a0
commit 57c4018e37

@ -2,9 +2,6 @@
package com.todoroo.astrid.service
import com.todoroo.astrid.core.CriterionInstance
import org.tasks.activities.FilterSettingsActivity.Companion.sql
import org.tasks.data.Filter
import org.tasks.data.FilterDao
import org.tasks.filters.FilterCriteriaProvider
import javax.inject.Inject
@ -14,15 +11,10 @@ class Upgrade_13_2 @Inject constructor(
private val filterCriteriaProvider: FilterCriteriaProvider,
) {
internal suspend fun rebuildFilters() =
filterDao.getFilters().forEach { rebuildFilter(it) }
private suspend fun rebuildFilter(filter: Filter) {
val serialized = filter.criterion?.takeIf { it.isNotBlank() }
val criterion = filterCriteriaProvider.fromString(serialized)
filter.setSql(criterion.sql)
filter.criterion = CriterionInstance.serialize(criterion)
filterDao.update(filter)
}
filterDao.getFilters().forEach {
filterCriteriaProvider.rebuildFilter(it)
filterDao.update(it)
}
companion object {
const val VERSION = 130200

@ -10,6 +10,7 @@ import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import com.todoroo.astrid.service.TaskCreator.Companion.getDefaultAlarms
import com.todoroo.astrid.service.TaskMover
import com.todoroo.astrid.service.Upgrade_13_2
import com.todoroo.astrid.service.Upgrader
import com.todoroo.astrid.service.Upgrader.Companion.V12_4
import com.todoroo.astrid.service.Upgrader.Companion.V12_8
@ -38,6 +39,7 @@ import org.tasks.data.TaskListMetadataDao
import org.tasks.data.UserActivityDao
import org.tasks.db.Migrations.repeatFrom
import org.tasks.db.Migrations.withoutFrom
import org.tasks.filters.FilterCriteriaProvider
import org.tasks.preferences.Preferences
import timber.log.Timber
import java.io.FileNotFoundException
@ -61,6 +63,7 @@ class TasksJsonImporter @Inject constructor(
private val taskMover: TaskMover,
private val taskListMetadataDao: TaskListMetadataDao,
private val vtodoCache: VtodoCache,
private val filterCriteriaProvider: FilterCriteriaProvider,
) {
private val result = ImportResult()
@ -123,7 +126,12 @@ class TasksJsonImporter @Inject constructor(
)
}
}
backupContainer.filters?.forEach { filter ->
backupContainer
.filters
?.onEach {
if (version < Upgrade_13_2.VERSION) filterCriteriaProvider.rebuildFilter(it)
}
?.forEach { filter ->
filter.setColor(themeToColor(context, version, filter.getColor()!!))
if (filterDao.getByName(filter.title!!) == null) {
filterDao.insert(filter)

@ -19,9 +19,11 @@ import com.todoroo.astrid.data.Task
import dagger.hilt.android.qualifiers.ApplicationContext
import org.tasks.R
import org.tasks.Strings
import org.tasks.activities.FilterSettingsActivity.Companion.sql
import org.tasks.data.Alarm
import org.tasks.data.CaldavDao
import org.tasks.data.CaldavTask
import org.tasks.data.Filter
import org.tasks.data.GoogleTask
import org.tasks.data.GoogleTaskListDao
import org.tasks.data.Tag
@ -38,6 +40,13 @@ class FilterCriteriaProvider @Inject constructor(
private val caldavDao: CaldavDao) {
private val r = context.resources
suspend fun rebuildFilter(filter: Filter) {
val serialized = filter.criterion?.takeIf { it.isNotBlank() }
val criterion = fromString(serialized)
filter.setSql(criterion.sql)
filter.criterion = CriterionInstance.serialize(criterion)
}
suspend fun fromString(criterion: String?): List<CriterionInstance> {
if (criterion.isNullOrBlank()) {
return emptyList()

Loading…
Cancel
Save