ref: reformat caching data in Rooms
This commit is contained in:
+38
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Created by sweetbread
|
||||
* Copyright (c) 2025. All rights reserved.
|
||||
*/
|
||||
|
||||
package ru.risdeveau.pixeldragon.repo
|
||||
|
||||
import ru.risdeveau.pixeldragon.api.getRoom
|
||||
import ru.risdeveau.pixeldragon.db.cacheDb
|
||||
import ru.risdeveau.pixeldragon.db.isExpired
|
||||
import ru.risdeveau.pixeldragon.db.toDomain
|
||||
import ru.risdeveau.pixeldragon.db.toEntity
|
||||
|
||||
class Room (
|
||||
val id: String,
|
||||
val name: String?,
|
||||
val type: String,
|
||||
val creatorId: String?,
|
||||
val createTime: Long?,
|
||||
val avatarUrl: String?,
|
||||
val members: Int?,
|
||||
val joined: Boolean,
|
||||
val direct: User?,
|
||||
|
||||
) {
|
||||
companion object {
|
||||
suspend fun getById(id: String, cached: Boolean = true): Room {
|
||||
val cachedRoom = cacheDb.roomDoa().getById(id)
|
||||
if ((cachedRoom == null) or (cachedRoom?.isExpired() == true)) {
|
||||
val room = getRoom(id)
|
||||
val cacheRoom = room.toEntity()
|
||||
cacheDb.roomDoa().insert(cacheRoom)
|
||||
return room
|
||||
}
|
||||
return cachedRoom!!.toDomain()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user