From 113fe8537626fe00331ce91bf4d5f186f53e6a6a Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 2 Dec 2020 14:27:33 -0600 Subject: [PATCH] Only fetch changed collections --- app/src/main/java/org/tasks/etebase/EtebaseClient.kt | 8 +++++++- .../main/java/org/tasks/etebase/EtebaseLocalCache.kt | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/tasks/etebase/EtebaseClient.kt b/app/src/main/java/org/tasks/etebase/EtebaseClient.kt index f7f7716e8..9155786fd 100644 --- a/app/src/main/java/org/tasks/etebase/EtebaseClient.kt +++ b/app/src/main/java/org/tasks/etebase/EtebaseClient.kt @@ -29,10 +29,15 @@ class EtebaseClient( @Throws(Exceptions.HttpException::class) suspend fun getCollections(): List { val collectionManager = etebase.collectionManager + var stoken: String? = cache.loadStoken() do { val response = withContext(Dispatchers.IO) { - collectionManager.list(TYPE_TASKS) + collectionManager.list( + TYPE_TASKS, + FetchOptions().stoken(stoken).limit(MAX_FETCH) + ) } + stoken = response.stoken response.data.forEach { cache.collectionSet(collectionManager, it) } @@ -40,6 +45,7 @@ class EtebaseClient( cache.collectionUnset(collectionManager, it) } } while (!response.isDone) + stoken?.let { cache.saveStoken(it) } return cache.collectionList(collectionManager) } diff --git a/app/src/main/java/org/tasks/etebase/EtebaseLocalCache.kt b/app/src/main/java/org/tasks/etebase/EtebaseLocalCache.kt index c1fe7a390..ee6419569 100644 --- a/app/src/main/java/org/tasks/etebase/EtebaseLocalCache.kt +++ b/app/src/main/java/org/tasks/etebase/EtebaseLocalCache.kt @@ -19,6 +19,16 @@ class EtebaseLocalCache private constructor(context: Context, username: String) } } + suspend fun saveStoken(stoken: String) { + withContext(Dispatchers.IO) { + fsCache.saveStoken(stoken) + } + } + + suspend fun loadStoken(): String? = withContext(Dispatchers.IO) { + fsCache.loadStoken() + } + suspend fun collectionList(colMgr: CollectionManager): List = withContext(Dispatchers.IO) { fsCache._unstable_collectionList(colMgr).filter { !it.isDeleted }