feat: check for internet connection before sending API requests
This commit is contained in:
@@ -8,6 +8,7 @@ package ru.risdeveau.pixeldragon.repo
|
||||
import ru.risdeveau.pixeldragon.api.getJoinedRooms
|
||||
import ru.risdeveau.pixeldragon.api.getRoom
|
||||
import ru.risdeveau.pixeldragon.db.cacheDb
|
||||
import ru.risdeveau.pixeldragon.db.isConnected
|
||||
import ru.risdeveau.pixeldragon.db.isExpired
|
||||
import ru.risdeveau.pixeldragon.db.toDomain
|
||||
import ru.risdeveau.pixeldragon.db.toEntity
|
||||
@@ -27,7 +28,9 @@ class Room (
|
||||
companion object {
|
||||
suspend fun getById(id: String, cached: Boolean = true): Room {
|
||||
val cachedRoom = cacheDb.roomDoa().getById(id)
|
||||
if ((cachedRoom == null) or (cachedRoom?.isExpired() == true)) {
|
||||
if (!isConnected() and
|
||||
(!cached or (cachedRoom == null) or (cachedRoom?.isExpired() == true))
|
||||
) {
|
||||
val room = getRoom(id)
|
||||
val cacheRoom = room.toEntity()
|
||||
cacheDb.roomDoa().insert(cacheRoom)
|
||||
@@ -38,7 +41,7 @@ class Room (
|
||||
|
||||
suspend fun getJoined(cached: Boolean = true): List<Room> {
|
||||
val cacheJoined = cacheDb.roomDoa().getAllJoined()
|
||||
if (cacheJoined.isEmpty()) {
|
||||
if (!isConnected() and cacheJoined.isEmpty()) {
|
||||
return getJoinedRooms()
|
||||
}
|
||||
return List(cacheJoined.size) { i -> cacheJoined[i].toDomain() }
|
||||
|
||||
Reference in New Issue
Block a user