mirror of
https://github.com/etesync/android
synced 2024-12-23 07:08:16 +00:00
Use getWantedTaskProvider
This commit is contained in:
parent
52bf0b615c
commit
a36cfb8c9b
@ -2,17 +2,21 @@ package com.etesync.syncadapter.syncadapter
|
|||||||
|
|
||||||
import android.accounts.Account
|
import android.accounts.Account
|
||||||
import android.content.ContentResolver
|
import android.content.ContentResolver
|
||||||
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.CalendarContract
|
import android.provider.CalendarContract
|
||||||
import at.bitfire.ical4android.TaskProvider.Companion.OPENTASK_PROVIDERS
|
|
||||||
import com.etesync.syncadapter.App
|
import com.etesync.syncadapter.App
|
||||||
|
import com.etesync.syncadapter.utils.TaskProviderHandling
|
||||||
|
|
||||||
|
|
||||||
fun requestSync(account: Account?) {
|
fun requestSync(context: Context, account: Account?) {
|
||||||
val authorities = arrayOf(App.addressBooksAuthority, CalendarContract.AUTHORITY) +
|
val authorities = arrayOf(
|
||||||
OPENTASK_PROVIDERS.map { it.authority }
|
App.addressBooksAuthority,
|
||||||
|
CalendarContract.AUTHORITY,
|
||||||
|
TaskProviderHandling.getWantedTaskSyncProvider(context)?.authority
|
||||||
|
)
|
||||||
|
|
||||||
for (authority in authorities) {
|
for (authority in authorities.filterNotNull()) {
|
||||||
val extras = Bundle()
|
val extras = Bundle()
|
||||||
extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true) // manual sync
|
extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true) // manual sync
|
||||||
extras.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true) // run immediately (don't queue)
|
extras.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true) // run immediately (don't queue)
|
||||||
|
@ -473,7 +473,7 @@ class AccountActivity : BaseActivity(), Toolbar.OnMenuItemClickListener, PopupMe
|
|||||||
|
|
||||||
|
|
||||||
private fun requestSync() {
|
private fun requestSync() {
|
||||||
requestSync(account)
|
requestSync(applicationContext, account)
|
||||||
Snackbar.make(findViewById(R.id.parent), R.string.account_synchronizing_now, Snackbar.LENGTH_LONG).show()
|
Snackbar.make(findViewById(R.id.parent), R.string.account_synchronizing_now, Snackbar.LENGTH_LONG).show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ open class ChangeEncryptionPasswordActivity : BaseActivity() {
|
|||||||
this@ChangeEncryptionPasswordActivity.finish()
|
this@ChangeEncryptionPasswordActivity.finish()
|
||||||
}.show()
|
}.show()
|
||||||
|
|
||||||
requestSync(account)
|
requestSync(applicationContext, account)
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
uiThread {
|
uiThread {
|
||||||
|
@ -19,8 +19,6 @@ import androidx.fragment.app.DialogFragment
|
|||||||
import androidx.loader.app.LoaderManager
|
import androidx.loader.app.LoaderManager
|
||||||
import androidx.loader.content.AsyncTaskLoader
|
import androidx.loader.content.AsyncTaskLoader
|
||||||
import androidx.loader.content.Loader
|
import androidx.loader.content.Loader
|
||||||
import at.bitfire.ical4android.TaskProvider
|
|
||||||
import at.bitfire.ical4android.TaskProvider.Companion.OPENTASK_PROVIDERS
|
|
||||||
import com.etesync.syncadapter.*
|
import com.etesync.syncadapter.*
|
||||||
import com.etesync.journalmanager.Crypto
|
import com.etesync.journalmanager.Crypto
|
||||||
import com.etesync.journalmanager.Exceptions
|
import com.etesync.journalmanager.Exceptions
|
||||||
@ -28,6 +26,7 @@ import com.etesync.journalmanager.JournalManager
|
|||||||
import com.etesync.syncadapter.model.CollectionInfo
|
import com.etesync.syncadapter.model.CollectionInfo
|
||||||
import com.etesync.syncadapter.model.JournalEntity
|
import com.etesync.syncadapter.model.JournalEntity
|
||||||
import com.etesync.syncadapter.model.JournalModel
|
import com.etesync.syncadapter.model.JournalModel
|
||||||
|
import com.etesync.syncadapter.utils.TaskProviderHandling
|
||||||
import okhttp3.HttpUrl
|
import okhttp3.HttpUrl
|
||||||
|
|
||||||
class CreateCollectionFragment : DialogFragment(), LoaderManager.LoaderCallbacks<Exception> {
|
class CreateCollectionFragment : DialogFragment(), LoaderManager.LoaderCallbacks<Exception> {
|
||||||
@ -85,14 +84,16 @@ class CreateCollectionFragment : DialogFragment(), LoaderManager.LoaderCallbacks
|
|||||||
|
|
||||||
override fun loadInBackground(): Exception? {
|
override fun loadInBackground(): Exception? {
|
||||||
try {
|
try {
|
||||||
val data = (context.applicationContext as App).data
|
val context = context.applicationContext
|
||||||
|
val data = (context as App).data
|
||||||
|
|
||||||
// 1. find service ID
|
// 1. find service ID
|
||||||
val authorities = when (info.enumType){
|
val authority = when (info.enumType){
|
||||||
CollectionInfo.Type.ADDRESS_BOOK -> listOf(App.addressBooksAuthority)
|
CollectionInfo.Type.ADDRESS_BOOK -> App.addressBooksAuthority
|
||||||
CollectionInfo.Type.CALENDAR -> listOf(CalendarContract.AUTHORITY)
|
CollectionInfo.Type.CALENDAR -> CalendarContract.AUTHORITY
|
||||||
CollectionInfo.Type.TASKS -> OPENTASK_PROVIDERS.map { it.authority }
|
CollectionInfo.Type.TASKS ->
|
||||||
else -> emptyList()
|
TaskProviderHandling.getWantedTaskSyncProvider(context)?.authority
|
||||||
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
val serviceEntity = JournalModel.Service.fetchOrCreate(data, account.name, info.enumType)
|
val serviceEntity = JournalModel.Service.fetchOrCreate(data, account.name, info.enumType)
|
||||||
@ -127,7 +128,7 @@ class CreateCollectionFragment : DialogFragment(), LoaderManager.LoaderCallbacks
|
|||||||
journalManager.update(journal)
|
journalManager.update(journal)
|
||||||
}
|
}
|
||||||
|
|
||||||
authorities.forEach { requestSync(it) }
|
authority?.let { requestSync(it) }
|
||||||
} catch (e: IllegalStateException) {
|
} catch (e: IllegalStateException) {
|
||||||
return e
|
return e
|
||||||
} catch (e: Exceptions.HttpException) {
|
} catch (e: Exceptions.HttpException) {
|
||||||
|
@ -19,7 +19,6 @@ import at.bitfire.ical4android.Event
|
|||||||
import at.bitfire.ical4android.InvalidCalendarException
|
import at.bitfire.ical4android.InvalidCalendarException
|
||||||
import at.bitfire.ical4android.Task
|
import at.bitfire.ical4android.Task
|
||||||
import at.bitfire.ical4android.TaskProvider
|
import at.bitfire.ical4android.TaskProvider
|
||||||
import at.bitfire.ical4android.TaskProvider.Companion.OPENTASK_PROVIDERS
|
|
||||||
import at.bitfire.vcard4android.Contact
|
import at.bitfire.vcard4android.Contact
|
||||||
import com.etesync.syncadapter.App
|
import com.etesync.syncadapter.App
|
||||||
import com.etesync.syncadapter.Constants
|
import com.etesync.syncadapter.Constants
|
||||||
@ -30,6 +29,7 @@ import com.etesync.journalmanager.model.SyncEntry
|
|||||||
import com.etesync.syncadapter.resource.*
|
import com.etesync.syncadapter.resource.*
|
||||||
import com.etesync.syncadapter.ui.journalviewer.ListEntriesFragment.Companion.setJournalEntryView
|
import com.etesync.syncadapter.ui.journalviewer.ListEntriesFragment.Companion.setJournalEntryView
|
||||||
import com.etesync.syncadapter.utils.EventEmailInvitation
|
import com.etesync.syncadapter.utils.EventEmailInvitation
|
||||||
|
import com.etesync.syncadapter.utils.TaskProviderHandling
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import ezvcard.util.PartialDate
|
import ezvcard.util.PartialDate
|
||||||
import org.jetbrains.anko.doAsync
|
import org.jetbrains.anko.doAsync
|
||||||
@ -117,7 +117,7 @@ class JournalItemActivity : BaseActivity(), Refreshable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
CollectionInfo.Type.TASKS -> {
|
CollectionInfo.Type.TASKS -> {
|
||||||
OPENTASK_PROVIDERS.forEach {
|
TaskProviderHandling.getWantedTaskSyncProvider(applicationContext)?.let {
|
||||||
val provider = TaskProvider.acquire(this, it)!!
|
val provider = TaskProvider.acquire(this, it)!!
|
||||||
val localTaskList = LocalTaskList.findByName(account, provider, LocalTaskList.Factory, info.uid!!)!!
|
val localTaskList = LocalTaskList.findByName(account, provider, LocalTaskList.Factory, info.uid!!)!!
|
||||||
val task = Task.tasksFromReader(StringReader(syncEntry.content))[0]
|
val task = Task.tasksFromReader(StringReader(syncEntry.content))[0]
|
||||||
|
@ -24,7 +24,6 @@ import android.widget.TextView
|
|||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import at.bitfire.ical4android.CalendarStorageException
|
import at.bitfire.ical4android.CalendarStorageException
|
||||||
import at.bitfire.ical4android.TaskProvider
|
import at.bitfire.ical4android.TaskProvider
|
||||||
import at.bitfire.ical4android.TaskProvider.Companion.OPENTASK_PROVIDERS
|
|
||||||
import at.bitfire.vcard4android.ContactsStorageException
|
import at.bitfire.vcard4android.ContactsStorageException
|
||||||
import com.etesync.syncadapter.App
|
import com.etesync.syncadapter.App
|
||||||
import com.etesync.syncadapter.Constants
|
import com.etesync.syncadapter.Constants
|
||||||
@ -39,6 +38,7 @@ import com.etesync.syncadapter.ui.importlocal.ImportActivity
|
|||||||
import com.etesync.syncadapter.ui.journalviewer.ListEntriesFragment
|
import com.etesync.syncadapter.ui.journalviewer.ListEntriesFragment
|
||||||
import com.etesync.syncadapter.utils.HintManager
|
import com.etesync.syncadapter.utils.HintManager
|
||||||
import com.etesync.syncadapter.utils.ShowcaseBuilder
|
import com.etesync.syncadapter.utils.ShowcaseBuilder
|
||||||
|
import com.etesync.syncadapter.utils.TaskProviderHandling
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
import tourguide.tourguide.ToolTip
|
import tourguide.tourguide.ToolTip
|
||||||
import java.io.FileNotFoundException
|
import java.io.FileNotFoundException
|
||||||
@ -213,9 +213,9 @@ class ViewCollectionActivity : BaseActivity(), Refreshable {
|
|||||||
}
|
}
|
||||||
CollectionInfo.Type.TASKS -> {
|
CollectionInfo.Type.TASKS -> {
|
||||||
try {
|
try {
|
||||||
val providerClient = OPENTASK_PROVIDERS.mapNotNull {
|
val providerClient = TaskProviderHandling.getWantedTaskSyncProvider(this@ViewCollectionActivity)?.let {
|
||||||
TaskProvider.acquire(this@ViewCollectionActivity, it)
|
TaskProvider.acquire(this@ViewCollectionActivity, it)
|
||||||
}.firstOrNull()
|
}
|
||||||
if (providerClient == null) {
|
if (providerClient == null) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ import com.etesync.syncadapter.resource.*
|
|||||||
import com.etesync.syncadapter.syncadapter.ContactsSyncManager
|
import com.etesync.syncadapter.syncadapter.ContactsSyncManager
|
||||||
import com.etesync.syncadapter.ui.Refreshable
|
import com.etesync.syncadapter.ui.Refreshable
|
||||||
import com.etesync.syncadapter.ui.importlocal.ResultFragment.ImportResult
|
import com.etesync.syncadapter.ui.importlocal.ResultFragment.ImportResult
|
||||||
|
import com.etesync.syncadapter.utils.TaskProviderHandling
|
||||||
import java.io.FileNotFoundException
|
import java.io.FileNotFoundException
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
@ -283,15 +284,17 @@ class ImportFragment : DialogFragment() {
|
|||||||
|
|
||||||
finishParsingFile(tasks.size)
|
finishParsingFile(tasks.size)
|
||||||
|
|
||||||
val providers = OPENTASK_PROVIDERS.mapNotNull {
|
val provider = TaskProviderHandling.getWantedTaskSyncProvider(requireContext())
|
||||||
|
.let {
|
||||||
|
if (it == null) {
|
||||||
|
result.e = Exception("Failed to acquire tasks content provider.")
|
||||||
|
null
|
||||||
|
} else {
|
||||||
TaskProvider.acquire(context, it)
|
TaskProvider.acquire(context, it)
|
||||||
}
|
}
|
||||||
if (providers.isEmpty()) {
|
|
||||||
result.e = Exception("Failed to acquire tasks content provider.")
|
|
||||||
return result
|
|
||||||
}
|
}
|
||||||
|
|
||||||
providers.forEach {
|
provider?.let {
|
||||||
val localTaskList: LocalTaskList?
|
val localTaskList: LocalTaskList?
|
||||||
try {
|
try {
|
||||||
localTaskList = LocalTaskList.findByName(account, it, LocalTaskList.Factory, info.uid!!)
|
localTaskList = LocalTaskList.findByName(account, it, LocalTaskList.Factory, info.uid!!)
|
||||||
|
Loading…
Reference in New Issue
Block a user