commonMain.net.folivo.trixnity.client.store.RoomUserStore.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of trixnity-client-jvm Show documentation
Show all versions of trixnity-client-jvm Show documentation
Multiplatform Kotlin SDK for matrix-protocol
package net.folivo.trixnity.client.store
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import net.folivo.trixnity.client.MatrixClientConfiguration
import net.folivo.trixnity.client.store.cache.MapDeleteByRoomIdRepositoryObservableCache
import net.folivo.trixnity.client.store.cache.MapRepositoryCoroutinesCacheKey
import net.folivo.trixnity.client.store.repository.RepositoryTransactionManager
import net.folivo.trixnity.client.store.repository.RoomUserReceiptsRepository
import net.folivo.trixnity.client.store.repository.RoomUserRepository
import net.folivo.trixnity.core.model.RoomId
import net.folivo.trixnity.core.model.UserId
class RoomUserStore(
roomUserRepository: RoomUserRepository,
roomUserReceiptsRepository: RoomUserReceiptsRepository,
tm: RepositoryTransactionManager,
config: MatrixClientConfiguration,
storeScope: CoroutineScope
) : Store {
private val roomUserCache =
MapDeleteByRoomIdRepositoryObservableCache(
roomUserRepository,
tm,
storeScope,
config.cacheExpireDurations.roomUser
) { it.firstKey }
private val roomUserReceiptsCache =
MapDeleteByRoomIdRepositoryObservableCache(
roomUserReceiptsRepository,
tm,
storeScope,
config.cacheExpireDurations.roomUserReceipts
) { it.firstKey }
override suspend fun clearCache() = deleteAll()
override suspend fun deleteAll() {
roomUserCache.deleteAll()
roomUserReceiptsCache.deleteAll()
}
suspend fun deleteByRoomId(roomId: RoomId) {
roomUserCache.deleteByRoomId(roomId)
roomUserReceiptsCache.deleteByRoomId(roomId)
}
fun getAll(roomId: RoomId): Flow