All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.dev.inmo.tgbotapi.libraries.cache.admins.AdminsCacheSettingsAPI.kt Maven / Gradle / Ivy

There is a newer version: 0.26.1
Show newest version
package dev.inmo.tgbotapi.libraries.cache.admins

import korlibs.time.minutes
import dev.inmo.tgbotapi.types.IdChatIdentifier
import dev.inmo.tgbotapi.types.Seconds
import korlibs.time.seconds
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.serialization.Serializable

@Serializable
data class AdminsCacheSettings(
    val refreshSeconds: Seconds = 10.minutes.seconds.toInt(),
    /**
     * In case this setting set up to true, will request admins list just from time to time instead of refreshing on
     * requests
     */
    val disableRequestsRefreshMode: Boolean = false
) {
    val refreshOnCacheCalls: Boolean
        get() = !disableRequestsRefreshMode
    @Deprecated("Renamed", ReplaceWith("refreshOnCacheCalls"))
    val refreshOnRequests: Boolean
        get() = refreshOnCacheCalls
}

interface AdminsCacheSettingsAPI {
    suspend fun getChatSettings(chatId: IdChatIdentifier): AdminsCacheSettings?
}

interface MutableAdminsCacheSettingsAPI : AdminsCacheSettingsAPI {
    val chatSettingsUpdatedFlow: SharedFlow>

    suspend fun setChatSettings(chatId: IdChatIdentifier, settings: AdminsCacheSettings)
}

fun AdminsCacheSettingsAPI.asMutable(): MutableAdminsCacheSettingsAPI? = this as? MutableAdminsCacheSettingsAPI

@Serializable
class StaticAdminsCacheSettingsAPI(
    private val settings: Map
) : AdminsCacheSettingsAPI {
    override suspend fun getChatSettings(chatId: IdChatIdentifier): AdminsCacheSettings? = settings[chatId]
}






© 2015 - 2024 Weber Informatics LLC | Privacy Policy