komikku/app/src/main/java/exh/md/utils/MdExtensions.kt

28 lines
769 B
Kotlin
Raw Normal View History

2021-07-06 00:31:30 +02:00
package exh.md.utils
import exh.md.dto.ListCallDto
import exh.util.under
2021-07-10 23:27:21 +02:00
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.contentOrNull
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
2021-07-06 00:31:30 +02:00
suspend fun <T> mdListCall(request: suspend (offset: Int) -> ListCallDto<T>): List<T> {
val results = mutableListOf<T>()
var offset = 0
do {
val list = request(offset)
results += list.data
2021-07-06 00:31:30 +02:00
offset += list.limit
} while (offset under list.total)
return results
}
2021-07-10 23:27:21 +02:00
fun JsonElement.asMdMap(): Map<String, String> {
return runCatching {
jsonObject.map { it.key to it.value.jsonPrimitive.contentOrNull.orEmpty() }.toMap()
}.getOrElse { emptyMap() }
}