feat: check for internet connection before sending API requests

This commit is contained in:
2025-11-05 00:06:04 +03:00
parent 5c6cd29a05
commit 05d3d739e2
3 changed files with 13 additions and 4 deletions
@@ -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() }