Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/schaal/ocreader.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schaal <daniel@schaal.email>2021-07-14 08:08:20 +0300
committerDaniel Schaal <daniel@schaal.email>2021-07-25 10:10:47 +0300
commit9c1fa5513e8cd04e8d91db23abc55f9beedbf9e2 (patch)
tree8792236576e7ac4925d91722ccf13ae9cc385d57
parent72320cac79c9d3dcdeed804f01482ac509fb3db2 (diff)
Directly emit Insertables
-rw-r--r--app/src/main/java/email/schaal/ocreader/api/API.kt21
1 files changed, 12 insertions, 9 deletions
diff --git a/app/src/main/java/email/schaal/ocreader/api/API.kt b/app/src/main/java/email/schaal/ocreader/api/API.kt
index 8e62e5a2..2d9737fc 100644
--- a/app/src/main/java/email/schaal/ocreader/api/API.kt
+++ b/app/src/main/java/email/schaal/ocreader/api/API.kt
@@ -190,11 +190,13 @@ class API {
ALL(3)
}
- private suspend fun batchedItemLoad(collector: FlowCollector<List<Insertable>>, queryType: QueryType, getRead: Boolean = false) {
+ private suspend fun batchedItemLoad(collector: FlowCollector<Insertable>, queryType: QueryType, getRead: Boolean = false) {
var offset = 0L
do {
val resultCount = api?.items(BATCH_SIZE, offset, queryType.type, 0L, getRead = getRead, oldestFirst = true)?.items?.let {
- collector.emit(it)
+ for (insertable in it) {
+ collector.emit(insertable)
+ }
offset = it.firstOrNull()?.id ?: 0L
it.size.toLong()
}
@@ -218,16 +220,20 @@ class API {
val folders = api?.folders()?.folders
val feeds = api?.feeds()?.feeds
- val insertFlow = flow<List<Insertable>> {
+ val insertFlow = flow {
username?.let {
- ocsapi?.user(username)?.let { emit(listOf(it))}
+ ocsapi?.user(username)?.let { emit(it)}
}
if(lastSync == 0L) {
batchedItemLoad(this, QueryType.STARRED, true)
batchedItemLoad(this, QueryType.ALL, false)
} else {
- api?.updatedItems(lastSync, QueryType.ALL.type, 0L)?.items?.let { emit(it) }
+ api?.updatedItems(lastSync, QueryType.ALL.type, 0L)?.items?.let {
+ for (insertable in it) {
+ emit(insertable)
+ }
+ }
}
}
@@ -257,10 +263,7 @@ class API {
feed.delete(realm)
}
- insertFlow.collect {
- for(insertable in it)
- insertable.insert(realm)
- }
+ insertFlow.collect { it.insert(realm) }
for (feed in dbFeeds) {
feed.starredCount = realm.where<Item>()