mirror of
https://github.com/bitfireAT/davx5-ose
synced 2024-10-01 17:00:45 +00:00
Use standard content provider instead of TaskProvider in TaskSyncer (#982)
* Update ical4android * Use standard content provider in TaskSyncer * Check version instead of acquiring TaskProvider * Add sync result error --------- Co-authored-by: Arnau Mora <arnyminerz@proton.me>
This commit is contained in:
parent
fca7c09105
commit
b962b68631
|
@ -65,7 +65,7 @@ class LocalTask: DmfsTask, LocalResource<Task> {
|
|||
// update in tasks provider
|
||||
val values = ContentValues(1)
|
||||
values.put(Tasks._UID, newUid)
|
||||
taskList.provider.client.update(taskSyncURI(), values, null, null)
|
||||
taskList.provider.update(taskSyncURI(), values, null, null)
|
||||
|
||||
// update this task
|
||||
task!!.uid = newUid
|
||||
|
@ -86,7 +86,7 @@ class LocalTask: DmfsTask, LocalResource<Task> {
|
|||
values.put(COLUMN_ETAG, eTag)
|
||||
values.put(Tasks.SYNC_VERSION, task!!.sequence)
|
||||
values.put(Tasks._DIRTY, 0)
|
||||
taskList.provider.client.update(taskSyncURI(), values, null, null)
|
||||
taskList.provider.update(taskSyncURI(), values, null, null)
|
||||
|
||||
if (fileName != null)
|
||||
this.fileName = fileName
|
||||
|
@ -97,7 +97,7 @@ class LocalTask: DmfsTask, LocalResource<Task> {
|
|||
if (id != null) {
|
||||
val values = ContentValues(1)
|
||||
values.put(COLUMN_FLAGS, flags)
|
||||
taskList.provider.client.update(taskSyncURI(), values, null, null)
|
||||
taskList.provider.update(taskSyncURI(), values, null, null)
|
||||
}
|
||||
|
||||
this.flags = flags
|
||||
|
|
|
@ -6,6 +6,7 @@ package at.bitfire.davdroid.resource
|
|||
|
||||
import android.accounts.Account
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.ContentProviderClient
|
||||
import android.content.ContentValues
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
|
@ -27,13 +28,14 @@ import java.util.logging.Logger
|
|||
*/
|
||||
class LocalTaskList private constructor(
|
||||
account: Account,
|
||||
provider: TaskProvider,
|
||||
provider: ContentProviderClient,
|
||||
providerName: TaskProvider.ProviderName,
|
||||
id: Long
|
||||
): DmfsTaskList<LocalTask>(account, provider, LocalTask.Factory, id), LocalCollection<LocalTask> {
|
||||
): DmfsTaskList<LocalTask>(account, provider, providerName, LocalTask.Factory, id), LocalCollection<LocalTask> {
|
||||
|
||||
companion object {
|
||||
|
||||
fun create(account: Account, provider: TaskProvider, info: Collection): Uri {
|
||||
fun create(account: Account, provider: ContentProviderClient, providerName: TaskProvider.ProviderName, info: Collection): Uri {
|
||||
// If the collection doesn't have a color, use a default color.
|
||||
if (info.color != null)
|
||||
info.color = Constants.DAVDROID_GREEN_RGBA
|
||||
|
@ -42,7 +44,7 @@ class LocalTaskList private constructor(
|
|||
values.put(TaskLists.OWNER, account.name)
|
||||
values.put(TaskLists.SYNC_ENABLED, 1)
|
||||
values.put(TaskLists.VISIBLE, 1)
|
||||
return create(account, provider, values)
|
||||
return create(account, provider, providerName, values)
|
||||
}
|
||||
|
||||
@SuppressLint("Recycle")
|
||||
|
@ -100,7 +102,7 @@ class LocalTaskList private constructor(
|
|||
override var lastSyncState: SyncState?
|
||||
get() {
|
||||
try {
|
||||
provider.client.query(taskListSyncUri(), arrayOf(TaskLists.SYNC_VERSION),
|
||||
provider.query(taskListSyncUri(), arrayOf(TaskLists.SYNC_VERSION),
|
||||
null, null, null)?.use { cursor ->
|
||||
if (cursor.moveToNext())
|
||||
cursor.getString(0)?.let {
|
||||
|
@ -115,7 +117,7 @@ class LocalTaskList private constructor(
|
|||
set(state) {
|
||||
val values = ContentValues(1)
|
||||
values.put(TaskLists.SYNC_VERSION, state?.toString())
|
||||
provider.client.update(taskListSyncUri(), values, null, null)
|
||||
provider.update(taskListSyncUri(), values, null, null)
|
||||
}
|
||||
|
||||
|
||||
|
@ -154,28 +156,32 @@ class LocalTaskList private constructor(
|
|||
override fun markNotDirty(flags: Int): Int {
|
||||
val values = ContentValues(1)
|
||||
values.put(LocalTask.COLUMN_FLAGS, flags)
|
||||
return provider.client.update(tasksSyncUri(), values,
|
||||
return provider.update(tasksSyncUri(), values,
|
||||
"${Tasks.LIST_ID}=? AND ${Tasks._DIRTY}=0",
|
||||
arrayOf(id.toString()))
|
||||
}
|
||||
|
||||
override fun removeNotDirtyMarked(flags: Int) =
|
||||
provider.client.delete(tasksSyncUri(),
|
||||
provider.delete(tasksSyncUri(),
|
||||
"${Tasks.LIST_ID}=? AND NOT ${Tasks._DIRTY} AND ${LocalTask.COLUMN_FLAGS}=?",
|
||||
arrayOf(id.toString(), flags.toString()))
|
||||
|
||||
override fun forgetETags() {
|
||||
val values = ContentValues(1)
|
||||
values.putNull(LocalEvent.COLUMN_ETAG)
|
||||
provider.client.update(tasksSyncUri(), values, "${Tasks.LIST_ID}=?",
|
||||
provider.update(tasksSyncUri(), values, "${Tasks.LIST_ID}=?",
|
||||
arrayOf(id.toString()))
|
||||
}
|
||||
|
||||
|
||||
object Factory: DmfsTaskListFactory<LocalTaskList> {
|
||||
|
||||
override fun newInstance(account: Account, provider: TaskProvider, id: Long) =
|
||||
LocalTaskList(account, provider, id)
|
||||
override fun newInstance(
|
||||
account: Account,
|
||||
provider: ContentProviderClient,
|
||||
providerName: TaskProvider.ProviderName,
|
||||
id: Long
|
||||
) = LocalTaskList(account, provider, providerName, id)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ class JtxSyncer @AssistedInject constructor(
|
|||
TaskProvider.checkVersion(context, TaskProvider.ProviderName.JtxBoard)
|
||||
} catch (e: TaskProvider.ProviderTooOldException) {
|
||||
tasksAppManager.get().notifyProviderTooOld(e)
|
||||
syncResult.databaseError = true
|
||||
return false // Don't sync
|
||||
}
|
||||
|
||||
|
|
|
@ -38,20 +38,18 @@ class TaskSyncer @AssistedInject constructor(
|
|||
fun create(account: Account, authority: String, extras: Array<String>, syncResult: SyncResult): TaskSyncer
|
||||
}
|
||||
|
||||
private lateinit var taskProvider: TaskProvider
|
||||
private val providerName = TaskProvider.ProviderName.fromAuthority(authority)
|
||||
|
||||
override val serviceType: String
|
||||
get() = Service.TYPE_CALDAV
|
||||
|
||||
|
||||
override fun localSyncCollections(provider: ContentProviderClient): List<LocalTaskList>
|
||||
= DmfsTaskList.find(account, taskProvider, LocalTaskList.Factory, "${TaskLists.SYNC_ENABLED}!=0", null)
|
||||
= DmfsTaskList.find(account, LocalTaskList.Factory, provider, providerName, "${TaskLists.SYNC_ENABLED}!=0", null)
|
||||
|
||||
override fun prepare(provider: ContentProviderClient): Boolean {
|
||||
// Acquire task provider
|
||||
val providerName = TaskProvider.ProviderName.fromAuthority(authority)
|
||||
taskProvider = try {
|
||||
TaskProvider.fromProviderClient(context, providerName, provider)
|
||||
// Don't sync if task provider is too old
|
||||
try {
|
||||
TaskProvider.checkVersion(context, providerName)
|
||||
} catch (e: TaskProvider.ProviderTooOldException) {
|
||||
tasksAppManager.get().notifyProviderTooOld(e)
|
||||
syncResult.databaseError = true
|
||||
|
@ -80,8 +78,8 @@ class TaskSyncer @AssistedInject constructor(
|
|||
|
||||
override fun create(provider: ContentProviderClient, remoteCollection: Collection): LocalTaskList {
|
||||
logger.log(Level.INFO, "Adding local task list", remoteCollection)
|
||||
val uri = LocalTaskList.create(account, taskProvider, remoteCollection)
|
||||
return DmfsTaskList.findByID(account, taskProvider, LocalTaskList.Factory, ContentUris.parseId(uri))
|
||||
val uri = LocalTaskList.create(account, provider, providerName, remoteCollection)
|
||||
return DmfsTaskList.findByID(account, provider, providerName, LocalTaskList.Factory, ContentUris.parseId(uri))
|
||||
}
|
||||
|
||||
override fun syncCollection(provider: ContentProviderClient, localCollection: LocalTaskList, remoteCollection: Collection) {
|
||||
|
|
|
@ -20,7 +20,7 @@ androidx-test-junit = "1.2.1"
|
|||
androidx-work = "2.9.1"
|
||||
bitfire-cert4android = "f1cc9b9ca3"
|
||||
bitfire-dav4jvm = "56d8b6c176"
|
||||
bitfire-ical4android = "86af14d6c8"
|
||||
bitfire-ical4android = "0f42348d4d"
|
||||
bitfire-vcard4android = "d5415f20b7"
|
||||
compose-accompanist = "0.34.0"
|
||||
compose-bom = "2024.06.00"
|
||||
|
|
Loading…
Reference in a new issue