diff --git a/app/src/main/java/org/tasks/backup/BackupContainer.kt b/app/src/main/java/org/tasks/backup/BackupContainer.kt index 629ecae6f..bd593aaeb 100644 --- a/app/src/main/java/org/tasks/backup/BackupContainer.kt +++ b/app/src/main/java/org/tasks/backup/BackupContainer.kt @@ -13,6 +13,7 @@ class BackupContainer( val googleTaskLists: List?, val caldavAccounts: List?, val caldavCalendars: List?, + val taskListMetadata: List?, val intPrefs: Map?, val longPrefs: Map?, val stringPrefs: Map?, diff --git a/app/src/main/java/org/tasks/backup/TasksJsonExporter.kt b/app/src/main/java/org/tasks/backup/TasksJsonExporter.kt index 1fdfaee2d..228e183cc 100755 --- a/app/src/main/java/org/tasks/backup/TasksJsonExporter.kt +++ b/app/src/main/java/org/tasks/backup/TasksJsonExporter.kt @@ -44,7 +44,8 @@ class TasksJsonExporter @Inject constructor( private val googleTaskListDao: GoogleTaskListDao, private val taskAttachmentDao: TaskAttachmentDao, private val caldavDao: CaldavDao, - private val workManager: WorkManager) { + private val workManager: WorkManager, + private val taskListMetadataDao: TaskListMetadataDao) { private var context: Context? = null private var exportCount = 0 @@ -136,6 +137,7 @@ class TasksJsonExporter @Inject constructor( googleTaskListDao.getAllLists(), caldavDao.getAccounts(), caldavDao.getCalendars(), + taskListMetadataDao.getAll(), preferences.getPrefs(Int::class.java), preferences.getPrefs(Long::class.java), preferences.getPrefs(String::class.java), diff --git a/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt b/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt index a52bd4208..f04d316ed 100644 --- a/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt +++ b/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt @@ -36,7 +36,8 @@ class TasksJsonImporter @Inject constructor( private val taskAttachmentDao: TaskAttachmentDao, private val caldavDao: CaldavDao, private val preferences: Preferences, - private val taskMover: TaskMover) { + private val taskMover: TaskMover, + private val taskListMetadataDao: TaskListMetadataDao) { private val result = ImportResult() @@ -102,6 +103,12 @@ class TasksJsonImporter @Inject constructor( caldavDao.insert(calendar) } } + backupContainer.taskListMetadata?.forEach { tlm -> + val id = tlm.filter.takeIf { it?.isNotBlank() == true } ?: tlm.tagUuid!! + if (taskListMetadataDao.fetchByTagOrFilter(id) == null) { + taskListMetadataDao.insert(tlm) + } + } backupContainer.tasks?.forEach { backup -> result.taskCount++ setProgressMessage( diff --git a/app/src/main/java/org/tasks/data/TaskListMetadata.kt b/app/src/main/java/org/tasks/data/TaskListMetadata.kt index 4865364a7..ab4b7b6dd 100644 --- a/app/src/main/java/org/tasks/data/TaskListMetadata.kt +++ b/app/src/main/java/org/tasks/data/TaskListMetadata.kt @@ -16,6 +16,7 @@ class TaskListMetadata { @ColumnInfo(name = "_id") var id: Long? = null + @Deprecated("not used") @ColumnInfo(name = "remoteId") var remoteId: String? = Task.NO_UUID diff --git a/app/src/main/java/org/tasks/data/TaskListMetadataDao.kt b/app/src/main/java/org/tasks/data/TaskListMetadataDao.kt index 5c8db9673..e65d78ce5 100644 --- a/app/src/main/java/org/tasks/data/TaskListMetadataDao.kt +++ b/app/src/main/java/org/tasks/data/TaskListMetadataDao.kt @@ -10,6 +10,9 @@ abstract class TaskListMetadataDao { @Query("SELECT * from task_list_metadata where tag_uuid = :tagUuid OR filter = :tagUuid LIMIT 1") abstract fun fetchByTagOrFilter(tagUuid: String): TaskListMetadata? + @Query("SELECT * FROM task_list_metadata") + abstract fun getAll(): List + @Update abstract fun update(taskListMetadata: TaskListMetadata)