Compare commits

..

No commits in common. "fd33cbfca317cd7db8f5a54ce92ac433593dd5f1" and "6c85e977f1d6eb66e71a691cf02da3e681bf6e96" have entirely different histories.

3 changed files with 26 additions and 12 deletions

View File

@ -21,7 +21,9 @@ val Koin.adminsPlugin: AdminsPlugin?
get() = getOrNull()
@Serializable
class AdminsPlugin : Plugin {
class AdminsPlugin(
private val chatsSettings: Map<ChatId, AdminsCacheSettings>? = null
) : Plugin {
@Transient
private val globalAdminsCacheAPI = MutableStateFlow<AdminsCacheAPI?>(null)
@Transient
@ -29,10 +31,15 @@ class AdminsPlugin : Plugin {
private val mutex = Mutex()
suspend fun adminsAPI(database: Database): AdminsCacheAPI {
val flow = mutex.withLock {
databaseToAdminsCacheAPI.getOrPut(database){ MutableStateFlow(null) }
return when (chatsSettings) {
null -> {
val flow = mutex.withLock {
databaseToAdminsCacheAPI.getOrPut(database){ MutableStateFlow(null) }
}
flow.first { it != null }!!
}
else -> globalAdminsCacheAPI.first { it != null }!!
}
return flow.filterNotNull().first()
}
override fun Module.setupDI(database: Database, params: JsonObject) {
@ -41,10 +48,17 @@ class AdminsPlugin : Plugin {
override suspend fun BehaviourContext.setupBotPlugin(koin: Koin) {
with(koin) {
mutex.withLock {
val flow = databaseToAdminsCacheAPI.getOrPut(koin.get()){ MutableStateFlow(null) }
if (flow.value == null) {
flow.value = AdminsCacheAPI(koin.get())
when (chatsSettings) {
null -> {
mutex.withLock {
val flow = databaseToAdminsCacheAPI.getOrPut(koin.get()){ MutableStateFlow(null) }
if (flow.value == null) {
flow.value = AdminsCacheAPI(koin.get())
}
}
}
else -> mutex.withLock {
globalAdminsCacheAPI.value = AdminsCacheAPI(koin.get())
}
}
}

View File

@ -14,7 +14,7 @@ github_release_plugin_version=2.4.1
tgbotapi_version=2.2.1
micro_utils_version=0.11.13
exposed_version=0.38.2
plagubot_version=1.4.0
plagubot_version=1.3.1
# ANDROID
@ -33,5 +33,5 @@ dokka_version=1.6.21
# Project data
group=dev.inmo
version=0.4.1
android_code_version=25
version=0.3.1
android_code_version=23

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists