Compare commits

..

13 Commits

3 changed files with 15 additions and 29 deletions

View File

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

View File

@@ -9,12 +9,12 @@ android.enableJetifier=true
kotlin_version=1.6.21 kotlin_version=1.6.21
kotlin_serialisation_core_version=1.3.3 kotlin_serialisation_core_version=1.3.3
github_release_plugin_version=2.3.7 github_release_plugin_version=2.4.1
tgbotapi_version=2.0.2 tgbotapi_version=2.2.2
micro_utils_version=0.11.1 micro_utils_version=0.11.13
exposed_version=0.38.2 exposed_version=0.38.2
plagubot_version=1.1.1 plagubot_version=1.4.1
# ANDROID # ANDROID
@@ -33,5 +33,5 @@ dokka_version=1.6.21
# Project data # Project data
group=dev.inmo group=dev.inmo
version=0.2.1 version=0.4.2
android_code_version=21 android_code_version=26

View File

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