mirror of
https://github.com/InsanusMokrassar/TelegramBotApiLibraries.git
synced 2025-10-27 02:03:47 +00:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 961d7d9afd | |||
| 6a84bcb860 | |||
| cd1ba035ac | |||
| 6f443c1617 | |||
| 85a1048b13 | |||
| 8dc1687b8e | |||
| 2518109290 | |||
| 760e51cabb | |||
| 3a667946da | |||
| f6df96c405 | |||
| fd33cbfca3 | |||
| 62a10b9042 | |||
| a7814c61b5 | |||
| 4eb27b42ad | |||
| 5367ff5629 | |||
| 50caa740cc | |||
| 6c85e977f1 | |||
| 156a8dd8be | |||
| 3728983653 | |||
| 8e99cb9e18 |
@@ -23,7 +23,7 @@ private val serializationFormat = Json {
|
|||||||
serializersModule = SerializersModule {
|
serializersModule = SerializersModule {
|
||||||
polymorphic(AdministratorChatMember::class) {
|
polymorphic(AdministratorChatMember::class) {
|
||||||
subclass(AdministratorChatMemberImpl::class, AdministratorChatMemberImpl.serializer())
|
subclass(AdministratorChatMemberImpl::class, AdministratorChatMemberImpl.serializer())
|
||||||
subclass(CreatorChatMember::class, CreatorChatMember.serializer())
|
subclass(OwnerChatMember::class, OwnerChatMember.serializer())
|
||||||
}
|
}
|
||||||
contextual(AdministratorChatMember::class, PolymorphicSerializer(AdministratorChatMember::class))
|
contextual(AdministratorChatMember::class, PolymorphicSerializer(AdministratorChatMember::class))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,15 +6,15 @@ kotlin.incremental.js=true
|
|||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
|
|
||||||
kotlin_version=1.6.21
|
kotlin_version=1.7.10
|
||||||
kotlin_serialisation_core_version=1.3.3
|
kotlin_serialisation_core_version=1.4.0
|
||||||
|
|
||||||
github_release_plugin_version=2.4.1
|
github_release_plugin_version=2.4.1
|
||||||
|
|
||||||
tgbotapi_version=2.1.1
|
tgbotapi_version=3.2.0
|
||||||
micro_utils_version=0.11.6
|
micro_utils_version=0.12.5
|
||||||
exposed_version=0.38.2
|
exposed_version=0.39.2
|
||||||
plagubot_version=1.2.1
|
plagubot_version=2.2.0
|
||||||
|
|
||||||
# ANDROID
|
# ANDROID
|
||||||
|
|
||||||
@@ -23,15 +23,15 @@ android_compileSdkVersion=32
|
|||||||
android_buildToolsVersion=32.0.0
|
android_buildToolsVersion=32.0.0
|
||||||
dexcount_version=3.1.0
|
dexcount_version=3.1.0
|
||||||
junit_version=4.12
|
junit_version=4.12
|
||||||
test_ext_junit_version=1.1.2
|
test_ext_junit_version=1.1.3
|
||||||
espresso_core=3.3.0
|
espresso_core=3.4.0
|
||||||
|
|
||||||
# Dokka
|
# Dokka
|
||||||
|
|
||||||
dokka_version=1.6.21
|
dokka_version=1.7.10
|
||||||
|
|
||||||
# Project data
|
# Project data
|
||||||
|
|
||||||
group=dev.inmo
|
group=dev.inmo
|
||||||
version=0.3.0
|
version=0.5.2
|
||||||
android_code_version=22
|
android_code_version=29
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -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.1-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
Reference in New Issue
Block a user