From 73c1d1ee0b51c173be5394cfe7063a8eed78cd16 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Thu, 15 Oct 2020 09:45:45 +0300 Subject: [PATCH] Update etebase dep and adjust code accordingly. --- app/build.gradle | 2 +- app/src/main/java/com/etesync/syncadapter/Constants.java | 5 +++++ .../java/com/etesync/syncadapter/EtebaseLocalCache.kt | 6 +++--- .../syncadapter/AddressBooksSyncAdapterService.kt | 2 +- .../syncadapter/CalendarsSyncAdapterService.kt | 2 +- .../syncadapter/syncadapter/SyncAdapterService.kt | 6 +++--- .../syncadapter/syncadapter/TasksSyncAdapterService.kt | 2 +- .../java/com/etesync/syncadapter/ui/AccountActivity.kt | 5 +++-- .../etesync/syncadapter/ui/etebase/CollectionActivity.kt | 7 ++++--- .../syncadapter/ui/etebase/CollectionItemFragment.kt | 4 ++-- .../syncadapter/ui/etebase/CollectionMembersFragment.kt | 3 ++- .../syncadapter/ui/etebase/EditCollectionFragment.kt | 6 +++--- .../syncadapter/ui/etebase/ImportCollectionFragment.kt | 6 +++--- .../syncadapter/ui/etebase/ItemRevisionsListFragment.kt | 2 +- .../syncadapter/ui/etebase/ListEntriesFragment.kt | 2 +- .../syncadapter/ui/etebase/NewAccountWizardActivity.kt | 9 +++++---- .../syncadapter/ui/etebase/ViewCollectionFragment.kt | 2 +- .../etesync/syncadapter/ui/importlocal/ImportFragment.kt | 2 +- 18 files changed, 41 insertions(+), 32 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6f781ffc..cbfa2897 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -138,7 +138,7 @@ dependencies { implementation "org.jetbrains.anko:anko-commons:0.10.4" implementation "com.etesync:journalmanager:1.1.1" - def etebaseVersion = '2.0.1-SNAPSHOT' + def etebaseVersion = '2.2.0' implementation "com.etebase:client:$etebaseVersion" def acraVersion = '5.3.0' diff --git a/app/src/main/java/com/etesync/syncadapter/Constants.java b/app/src/main/java/com/etesync/syncadapter/Constants.java index 9c008ab0..102aa95f 100644 --- a/app/src/main/java/com/etesync/syncadapter/Constants.java +++ b/app/src/main/java/com/etesync/syncadapter/Constants.java @@ -48,4 +48,9 @@ public class Constants { public final static String ETEBASE_TYPE_ADDRESS_BOOK = "etebase.vcard"; public final static String ETEBASE_TYPE_CALENDAR = "etebase.vevent"; public final static String ETEBASE_TYPE_TASKS = "etebase.vtodo"; + public final static String[] COLLECTION_TYPES = new String[] { + ETEBASE_TYPE_ADDRESS_BOOK, + ETEBASE_TYPE_CALENDAR, + ETEBASE_TYPE_TASKS + }; } diff --git a/app/src/main/java/com/etesync/syncadapter/EtebaseLocalCache.kt b/app/src/main/java/com/etesync/syncadapter/EtebaseLocalCache.kt index bfcacfa7..75bf54ec 100644 --- a/app/src/main/java/com/etesync/syncadapter/EtebaseLocalCache.kt +++ b/app/src/main/java/com/etesync/syncadapter/EtebaseLocalCache.kt @@ -44,13 +44,13 @@ class EtebaseLocalCache private constructor(context: Context, username: String) return fsCache._unstable_collectionList(colMgr).filter { withDeleted || !it.isDeleted }.map{ - CachedCollection(it, it.meta) + CachedCollection(it, it.meta, it.collectionType) } } fun collectionGet(colMgr: CollectionManager, colUid: String): CachedCollection { return fsCache.collectionGet(colMgr, colUid).let { - CachedCollection(it, it.meta) + CachedCollection(it, it.meta, it.collectionType) } } @@ -124,6 +124,6 @@ class EtebaseLocalCache private constructor(context: Context, username: String) } } -data class CachedCollection(val col: Collection, val meta: CollectionMetadata) +data class CachedCollection(val col: Collection, val meta: ItemMetadata, val collectionType: String) data class CachedItem(val item: Item, val meta: ItemMetadata, val content: String) \ No newline at end of file diff --git a/app/src/main/java/com/etesync/syncadapter/syncadapter/AddressBooksSyncAdapterService.kt b/app/src/main/java/com/etesync/syncadapter/syncadapter/AddressBooksSyncAdapterService.kt index 67e7a300..b13c085f 100644 --- a/app/src/main/java/com/etesync/syncadapter/syncadapter/AddressBooksSyncAdapterService.kt +++ b/app/src/main/java/com/etesync/syncadapter/syncadapter/AddressBooksSyncAdapterService.kt @@ -77,7 +77,7 @@ class AddressBooksSyncAdapterService : SyncAdapterService() { val etebase = EtebaseLocalCache.getEtebase(context, httpClient.okHttpClient, settings) val colMgr = etebase.collectionManager - collections = etebaseLocalCache.collectionList(colMgr).filter { it.meta.collectionType == Constants.ETEBASE_TYPE_ADDRESS_BOOK } + collections = etebaseLocalCache.collectionList(colMgr).filter { it.collectionType == Constants.ETEBASE_TYPE_ADDRESS_BOOK } } for (collection in collections) { diff --git a/app/src/main/java/com/etesync/syncadapter/syncadapter/CalendarsSyncAdapterService.kt b/app/src/main/java/com/etesync/syncadapter/syncadapter/CalendarsSyncAdapterService.kt index 8dc159e9..29d8b4e7 100644 --- a/app/src/main/java/com/etesync/syncadapter/syncadapter/CalendarsSyncAdapterService.kt +++ b/app/src/main/java/com/etesync/syncadapter/syncadapter/CalendarsSyncAdapterService.kt @@ -63,7 +63,7 @@ class CalendarsSyncAdapterService : SyncAdapterService() { val etebase = EtebaseLocalCache.getEtebase(context, httpClient.okHttpClient, settings) val colMgr = etebase.collectionManager - collections = etebaseLocalCache.collectionList(colMgr).filter { it.meta.collectionType == Constants.ETEBASE_TYPE_CALENDAR } + collections = etebaseLocalCache.collectionList(colMgr).filter { it.collectionType == Constants.ETEBASE_TYPE_CALENDAR } } for (collection in collections) { diff --git a/app/src/main/java/com/etesync/syncadapter/syncadapter/SyncAdapterService.kt b/app/src/main/java/com/etesync/syncadapter/syncadapter/SyncAdapterService.kt index 63b2273b..62488fc5 100644 --- a/app/src/main/java/com/etesync/syncadapter/syncadapter/SyncAdapterService.kt +++ b/app/src/main/java/com/etesync/syncadapter/syncadapter/SyncAdapterService.kt @@ -26,10 +26,11 @@ import com.etebase.client.FetchOptions import com.etebase.client.exceptions.ConnectionException import com.etebase.client.exceptions.TemporaryServerErrorException import com.etebase.client.exceptions.UnauthorizedException -import com.etesync.syncadapter.* import com.etesync.journalmanager.Crypto import com.etesync.journalmanager.Exceptions import com.etesync.journalmanager.JournalManager +import com.etesync.syncadapter.* +import com.etesync.syncadapter.Constants.COLLECTION_TYPES import com.etesync.syncadapter.log.Logger import com.etesync.syncadapter.model.CollectionInfo import com.etesync.syncadapter.model.JournalEntity @@ -243,7 +244,6 @@ abstract class SyncAdapterService : Service() { return } - val etebaseLocalCache = EtebaseLocalCache.getInstance(context, account.name) synchronized(etebaseLocalCache) { val cacheAge = 5 * 1000 // 5 seconds - it's just a hack for burst fetching @@ -259,7 +259,7 @@ abstract class SyncAdapterService : Service() { var stoken = etebaseLocalCache.loadStoken() var done = false while (!done) { - val colList = colMgr.list(FetchOptions().stoken(stoken)) + val colList = colMgr.list(COLLECTION_TYPES, FetchOptions().stoken(stoken)) for (col in colList.data) { etebaseLocalCache.collectionSet(colMgr, col) } diff --git a/app/src/main/java/com/etesync/syncadapter/syncadapter/TasksSyncAdapterService.kt b/app/src/main/java/com/etesync/syncadapter/syncadapter/TasksSyncAdapterService.kt index 22d18caf..b2c4224b 100644 --- a/app/src/main/java/com/etesync/syncadapter/syncadapter/TasksSyncAdapterService.kt +++ b/app/src/main/java/com/etesync/syncadapter/syncadapter/TasksSyncAdapterService.kt @@ -83,7 +83,7 @@ class TasksSyncAdapterService: SyncAdapterService() { val etebase = EtebaseLocalCache.getEtebase(context, httpClient.okHttpClient, settings) val colMgr = etebase.collectionManager - collections = etebaseLocalCache.collectionList(colMgr).filter { it.meta.collectionType == Constants.ETEBASE_TYPE_TASKS } + collections = etebaseLocalCache.collectionList(colMgr).filter { it.collectionType == Constants.ETEBASE_TYPE_TASKS } } for (collection in collections) { diff --git a/app/src/main/java/com/etesync/syncadapter/ui/AccountActivity.kt b/app/src/main/java/com/etesync/syncadapter/ui/AccountActivity.kt index dbea30be..98df3c02 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/AccountActivity.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/AccountActivity.kt @@ -398,8 +398,9 @@ class AccountActivity : BaseActivity(), Toolbar.OnMenuItemClickListener, PopupMe synchronized(etebaseLocalCache) { return etebaseLocalCache.collectionList(colMgr).map { val meta = it.meta + val collectionType = it.collectionType - if (strType != meta.collectionType) { + if (strType != collectionType) { return@map null } @@ -409,7 +410,7 @@ class AccountActivity : BaseActivity(), Toolbar.OnMenuItemClickListener, PopupMe val metaColor = meta.color val color = if (!metaColor.isNullOrBlank()) LocalCalendar.parseColor(metaColor) else null - CollectionListItemInfo(it.col.uid, type, meta.name, meta.description + CollectionListItemInfo(it.col.uid, type, meta.name!!, meta.description ?: "", color, isReadOnly, isAdmin, null) }.filterNotNull() } diff --git a/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionActivity.kt b/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionActivity.kt index f3dbf5f7..add5d988 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionActivity.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionActivity.kt @@ -11,7 +11,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.observe import com.etebase.client.CollectionManager -import com.etebase.client.CollectionMetadata +import com.etebase.client.ItemMetadata import com.etesync.syncadapter.* import com.etesync.syncadapter.ui.BaseActivity import org.jetbrains.anko.doAsync @@ -47,8 +47,9 @@ class CollectionActivity() : BaseActivity() { } else if (colType != null) { model.observe(this) { doAsync { - val meta = CollectionMetadata(colType, "") - val cachedCollection = CachedCollection(it.colMgr.create(meta, ""), meta) + val meta = ItemMetadata() + meta.name = "" + val cachedCollection = CachedCollection(it.colMgr.create(colType, meta, ""), meta, colType) uiThread { supportFragmentManager.commit { replace(R.id.fragment_container, EditCollectionFragment(cachedCollection, true)) diff --git a/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionItemFragment.kt b/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionItemFragment.kt index 3e59b6ba..a2e2a0f7 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionItemFragment.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionItemFragment.kt @@ -101,7 +101,7 @@ class CollectionItemFragment(private val cachedItem: CachedItem) : Fragment() { val context = requireContext() val account = accountHolder.account val cachedCol = collectionModel.value!! - when (cachedCol.meta.collectionType) { + when (cachedCol.collectionType) { Constants.ETEBASE_TYPE_CALENDAR -> { val provider = context.contentResolver.acquireContentProviderClient(CalendarContract.CONTENT_URI)!! val localCalendar = LocalCalendar.findByName(account, provider, LocalCalendar.Factory, cachedCol.col.uid)!! @@ -205,7 +205,7 @@ class PrettyFragment(private val mainFragment: CollectionItemFragment, private v override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { var v: View? = null - when (cachedCollection.meta.collectionType) { + when (cachedCollection.collectionType) { Constants.ETEBASE_TYPE_ADDRESS_BOOK -> { v = inflater.inflate(R.layout.contact_info, container, false) asyncTask = loadContactTask(v) diff --git a/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionMembersFragment.kt b/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionMembersFragment.kt index a5e92ac4..6861080f 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionMembersFragment.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/etebase/CollectionMembersFragment.kt @@ -54,9 +54,10 @@ class CollectionMembersFragment : Fragment() { private fun initUi(inflater: LayoutInflater, v: View, cachedCollection: CachedCollection) { val meta = cachedCollection.meta + val collectionType = cachedCollection.collectionType val colorSquare = v.findViewById(R.id.color) val color = LocalCalendar.parseColor(meta.color) - when (meta.collectionType) { + when (collectionType) { Constants.ETEBASE_TYPE_CALENDAR -> { colorSquare.setBackgroundColor(color) } diff --git a/app/src/main/java/com/etesync/syncadapter/ui/etebase/EditCollectionFragment.kt b/app/src/main/java/com/etesync/syncadapter/ui/etebase/EditCollectionFragment.kt index 245822ab..d95a6b36 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/etebase/EditCollectionFragment.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/etebase/EditCollectionFragment.kt @@ -47,7 +47,7 @@ class EditCollectionFragment(private val cachedCollection: CachedCollection, pri cachedCollection.let { var titleId: Int = R.string.create_calendar if (isCreating) { - when (cachedCollection.meta.collectionType) { + when (cachedCollection.collectionType) { Constants.ETEBASE_TYPE_CALENDAR -> { titleId = R.string.create_calendar } @@ -75,7 +75,7 @@ class EditCollectionFragment(private val cachedCollection: CachedCollection, pri desc.setText(meta.description) val colorSquare = v.findViewById(R.id.color) - when (cachedCollection.meta.collectionType) { + when (cachedCollection.collectionType) { Constants.ETEBASE_TYPE_CALENDAR -> { title.setHint(R.string.create_calendar_display_name_hint) @@ -200,7 +200,7 @@ class EditCollectionFragment(private val cachedCollection: CachedCollection, pri meta.mtime = System.currentTimeMillis() if (ok) { - when (meta.collectionType) { + when (cachedCollection.collectionType) { Constants.ETEBASE_TYPE_CALENDAR, Constants.ETEBASE_TYPE_TASKS -> { val view = v.findViewById(R.id.color) val color = (view.background as ColorDrawable).color diff --git a/app/src/main/java/com/etesync/syncadapter/ui/etebase/ImportCollectionFragment.kt b/app/src/main/java/com/etesync/syncadapter/ui/etebase/ImportCollectionFragment.kt index 14017fe9..93e032fb 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/etebase/ImportCollectionFragment.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/etebase/ImportCollectionFragment.kt @@ -57,12 +57,12 @@ class ImportCollectionFragment : Fragment() { img.setImageResource(R.drawable.ic_account_circle_white) text.setText(R.string.import_button_local) card.setOnClickListener { - if (cachedCollection.meta.collectionType == Constants.ETEBASE_TYPE_CALENDAR) { + if (cachedCollection.collectionType == Constants.ETEBASE_TYPE_CALENDAR) { parentFragmentManager.commit { replace(R.id.fragment_container, LocalCalendarImportFragment(accountHolder.account, cachedCollection.col.uid)) addToBackStack(null) } - } else if (cachedCollection.meta.collectionType == Constants.ETEBASE_TYPE_ADDRESS_BOOK) { + } else if (cachedCollection.collectionType == Constants.ETEBASE_TYPE_ADDRESS_BOOK) { parentFragmentManager.commit { replace(R.id.fragment_container, LocalContactImportFragment(accountHolder.account, cachedCollection.col.uid)) addToBackStack(null) @@ -72,7 +72,7 @@ class ImportCollectionFragment : Fragment() { (activity as? BaseActivity?)?.supportActionBar?.setTitle(R.string.import_select_account) } - if (collectionModel.value!!.meta.collectionType == Constants.ETEBASE_TYPE_TASKS) { + if (collectionModel.value!!.collectionType == Constants.ETEBASE_TYPE_TASKS) { card.visibility = View.GONE } } diff --git a/app/src/main/java/com/etesync/syncadapter/ui/etebase/ItemRevisionsListFragment.kt b/app/src/main/java/com/etesync/syncadapter/ui/etebase/ItemRevisionsListFragment.kt index 4f4ee7a9..cdf425c9 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/etebase/ItemRevisionsListFragment.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/etebase/ItemRevisionsListFragment.kt @@ -97,7 +97,7 @@ class ItemRevisionsListFragment(private val cachedCollection: CachedCollection, val item = getItem(position) - setItemView(v, cachedCollection.meta.collectionType, item) + setItemView(v, cachedCollection.collectionType, item) /* FIXME: handle entry error: val entryError = data.select(EntryErrorEntity::class.java).where(EntryErrorEntity.ENTRY.eq(entryEntity)).limit(1).get().firstOrNull() diff --git a/app/src/main/java/com/etesync/syncadapter/ui/etebase/ListEntriesFragment.kt b/app/src/main/java/com/etesync/syncadapter/ui/etebase/ListEntriesFragment.kt index 62bc36b0..b4a0629e 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/etebase/ListEntriesFragment.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/etebase/ListEntriesFragment.kt @@ -85,7 +85,7 @@ class ListEntriesFragment : ListFragment(), AdapterView.OnItemClickListener { val item = getItem(position) - setItemView(v, cachedCollection.meta.collectionType, item) + setItemView(v, cachedCollection.collectionType, item) /* FIXME: handle entry error: val entryError = data.select(EntryErrorEntity::class.java).where(EntryErrorEntity.ENTRY.eq(entryEntity)).limit(1).get().firstOrNull() diff --git a/app/src/main/java/com/etesync/syncadapter/ui/etebase/NewAccountWizardActivity.kt b/app/src/main/java/com/etesync/syncadapter/ui/etebase/NewAccountWizardActivity.kt index 2252cacf..fab6823d 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/etebase/NewAccountWizardActivity.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/etebase/NewAccountWizardActivity.kt @@ -16,8 +16,8 @@ import androidx.fragment.app.activityViewModels import androidx.fragment.app.commit import androidx.fragment.app.viewModels import com.etebase.client.Collection -import com.etebase.client.CollectionMetadata import com.etebase.client.FetchOptions +import com.etebase.client.ItemMetadata import com.etebase.client.exceptions.EtebaseException import com.etesync.syncadapter.Constants.* import com.etesync.syncadapter.R @@ -107,7 +107,7 @@ class WizardCheckFragment : Fragment() { loadingModel.setLoading(true) doAsync { try { - val collections = colMgr.list(FetchOptions().limit(1)) + val collections = colMgr.list(COLLECTION_TYPES, FetchOptions().limit(1)) uiThread { if (collections.data.size > 0) { activity?.finish() @@ -182,10 +182,11 @@ class WizardFragment : Fragment() { ) baseMeta.forEach { - val meta = CollectionMetadata(it.first, it.second) + val meta = ItemMetadata() + meta.name = it.second meta.mtime = System.currentTimeMillis() - val col = colMgr.create(meta, "") + val col = colMgr.create(it.first, meta, "") uploadCollection(accountHolder, col) } requestSync(requireContext(), accountHolder.account) diff --git a/app/src/main/java/com/etesync/syncadapter/ui/etebase/ViewCollectionFragment.kt b/app/src/main/java/com/etesync/syncadapter/ui/etebase/ViewCollectionFragment.kt index 9f3cbf24..c12feebc 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/etebase/ViewCollectionFragment.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/etebase/ViewCollectionFragment.kt @@ -68,7 +68,7 @@ class ViewCollectionFragment : Fragment() { val colorSquare = container.findViewById(R.id.color) val color = LocalCalendar.parseColor(meta.color) - when (meta.collectionType) { + when (cachedCollection.collectionType) { Constants.ETEBASE_TYPE_CALENDAR -> { colorSquare.setBackgroundColor(color) } diff --git a/app/src/main/java/com/etesync/syncadapter/ui/importlocal/ImportFragment.kt b/app/src/main/java/com/etesync/syncadapter/ui/importlocal/ImportFragment.kt index c2bef3c9..ee694c27 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/importlocal/ImportFragment.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/importlocal/ImportFragment.kt @@ -436,7 +436,7 @@ class ImportFragment(private val account: Account, private val uid: String, priv } fun newInstance(account: Account, cachedCollection: CachedCollection): ImportFragment { - val enumType = when (cachedCollection.meta.collectionType) { + val enumType = when (cachedCollection.collectionType) { ETEBASE_TYPE_CALENDAR -> CollectionInfo.Type.CALENDAR ETEBASE_TYPE_TASKS -> CollectionInfo.Type.TASKS ETEBASE_TYPE_ADDRESS_BOOK -> CollectionInfo.Type.ADDRESS_BOOK