mirror of
https://github.com/InsanusMokrassar/TelegramBotApiLibraries.git
synced 2025-10-26 17:50:20 +00:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 653d17827a | |||
| e4a21fe293 | |||
| 7b75828b2e | |||
| e8cb9556db | |||
| d118a3d060 | |||
| 62fb8854b9 | |||
| 7163f7d64a | |||
| 8a6925e95c | |||
| fd275ddacf | |||
| 8e281f0edc | |||
| f802aa6a99 | |||
| ee9f524fc6 | |||
| 950eebea06 | |||
| 7845b7cc5f | |||
| 539515da43 | |||
| 3695ab7936 | |||
| ab802df7d1 |
@@ -7,10 +7,8 @@ buildscript {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.0.4'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
||||
classpath "com.getkeepsafe.dexcount:dexcount-gradle-plugin:$dexcount_version"
|
||||
classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version"
|
||||
}
|
||||
}
|
||||
|
||||
3
cache/admins/common/build.gradle
vendored
3
cache/admins/common/build.gradle
vendored
@@ -1,10 +1,9 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
id "com.android.library"
|
||||
}
|
||||
|
||||
apply from: "$mppProjectWithSerializationPresetPath"
|
||||
apply from: "$mppJavaWithJsProjectPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<manifest package="dev.inmo.tgbotapi.libraries.cache.admins"/>
|
||||
3
cache/admins/micro_utils/build.gradle
vendored
3
cache/admins/micro_utils/build.gradle
vendored
@@ -1,10 +1,9 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
id "com.android.library"
|
||||
}
|
||||
|
||||
apply from: "$mppProjectWithSerializationPresetPath"
|
||||
apply from: "$mppJavaWithJsProjectPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
package dev.inmo.tgbotapi.libraries.cache.admins.micro_utils
|
||||
|
||||
import com.soywiz.klock.DateTime
|
||||
import dev.inmo.micro_utils.coroutines.actor
|
||||
import dev.inmo.micro_utils.coroutines.safelyWithoutExceptions
|
||||
import dev.inmo.micro_utils.coroutines.*
|
||||
import dev.inmo.micro_utils.repos.*
|
||||
import dev.inmo.tgbotapi.libraries.cache.admins.DefaultAdminsCacheAPIRepo
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.channels.*
|
||||
import kotlin.coroutines.*
|
||||
|
||||
private sealed class RepoActions<T> {
|
||||
abstract val toReturn: Continuation<T>
|
||||
abstract val deferred: CompletableDeferred<T>
|
||||
}
|
||||
private class GetUpdateDateTimeRepoAction(
|
||||
val chatId: ChatId,
|
||||
override val toReturn: Continuation<DateTime?>
|
||||
override val deferred: CompletableDeferred<DateTime?>
|
||||
) : RepoActions<DateTime?>()
|
||||
private class GetChatAdminsRepoAction(
|
||||
val chatId: ChatId,
|
||||
override val toReturn: Continuation<List<AdministratorChatMember>?>
|
||||
override val deferred: CompletableDeferred<List<AdministratorChatMember>?>
|
||||
) : RepoActions<List<AdministratorChatMember>?>()
|
||||
private class SetChatAdminsRepoAction(
|
||||
val chatId: ChatId,
|
||||
val newValue: List<AdministratorChatMember>,
|
||||
override val toReturn: Continuation<Unit>
|
||||
override val deferred: CompletableDeferred<Unit>
|
||||
) : RepoActions<Unit>()
|
||||
|
||||
class DefaultAdminsCacheAPIRepoImpl(
|
||||
@@ -33,32 +33,54 @@ class DefaultAdminsCacheAPIRepoImpl(
|
||||
private val updatesRepo: KeyValueRepo<ChatId, MilliSeconds>,
|
||||
private val scope: CoroutineScope
|
||||
) : DefaultAdminsCacheAPIRepo {
|
||||
private val actor = scope.actor<RepoActions<*>>(Channel.UNLIMITED) {
|
||||
safelyWithoutExceptions {
|
||||
private val actor = scope.actorAsync<RepoActions<*>>(Channel.UNLIMITED) {
|
||||
safelyWithoutExceptions(
|
||||
{ e ->
|
||||
it.deferred.completeExceptionally(e)
|
||||
}
|
||||
) {
|
||||
when (it) {
|
||||
is GetUpdateDateTimeRepoAction -> it.toReturn.resume(
|
||||
is GetUpdateDateTimeRepoAction -> it.deferred.complete(
|
||||
updatesRepo.get(it.chatId) ?.let { DateTime(it.toDouble()) }
|
||||
)
|
||||
is GetChatAdminsRepoAction -> it.toReturn.resume(adminsRepo.getAll(it.chatId))
|
||||
is GetChatAdminsRepoAction -> it.deferred.complete(adminsRepo.getAll(it.chatId))
|
||||
is SetChatAdminsRepoAction -> {
|
||||
adminsRepo.clear(it.chatId)
|
||||
adminsRepo.set(it.chatId, it.newValue)
|
||||
updatesRepo.set(it.chatId, DateTime.now().unixMillisLong)
|
||||
it.toReturn.resume(Unit)
|
||||
it.deferred.complete(Unit)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun getChatAdmins(chatId: ChatId): List<AdministratorChatMember>? = suspendCoroutine {
|
||||
actor.trySend(GetChatAdminsRepoAction(chatId, it))
|
||||
override suspend fun getChatAdmins(chatId: ChatId): List<AdministratorChatMember>? {
|
||||
val deferred = CompletableDeferred<List<AdministratorChatMember>?>()
|
||||
actor.trySend(
|
||||
GetChatAdminsRepoAction(chatId, deferred)
|
||||
).onFailure {
|
||||
deferred.completeExceptionally(it ?: IllegalStateException("Something went wrong when tried to add getChatAdmins action"))
|
||||
}
|
||||
return deferred.await()
|
||||
}
|
||||
|
||||
override suspend fun setChatAdmins(chatId: ChatId, chatMembers: List<AdministratorChatMember>) = suspendCoroutine<Unit> {
|
||||
actor.trySend(SetChatAdminsRepoAction(chatId, chatMembers, it))
|
||||
override suspend fun setChatAdmins(chatId: ChatId, chatMembers: List<AdministratorChatMember>) {
|
||||
val deferred = CompletableDeferred<Unit>()
|
||||
actor.trySend(
|
||||
SetChatAdminsRepoAction(chatId, chatMembers, deferred)
|
||||
).onFailure {
|
||||
deferred.completeExceptionally(it ?: IllegalStateException("Something went wrong when tried to add setChatAdmins action"))
|
||||
}
|
||||
return deferred.await()
|
||||
}
|
||||
override suspend fun lastUpdate(chatId: ChatId): DateTime? = suspendCoroutine {
|
||||
actor.trySend(GetUpdateDateTimeRepoAction(chatId, it))
|
||||
override suspend fun lastUpdate(chatId: ChatId): DateTime? {
|
||||
val deferred = CompletableDeferred<DateTime?>()
|
||||
actor.trySend(
|
||||
GetUpdateDateTimeRepoAction(chatId, deferred)
|
||||
).onFailure {
|
||||
deferred.completeExceptionally(it ?: IllegalStateException("Something went wrong when tried to add lastUpdate action"))
|
||||
}
|
||||
return deferred.await()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,9 +40,9 @@ fun TelegramBot.createAdminsCacheAPI(
|
||||
"AdminsTable"
|
||||
).withMapper<ChatId, AdministratorChatMember, Identifier, String>(
|
||||
keyFromToTo = { chatId },
|
||||
valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(this) },
|
||||
valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(AdministratorChatMember.serializer(), this) },
|
||||
keyToToFrom = { toChatId() },
|
||||
valueToToFrom = { telegramAdminsSerializationFormat.decodeFromString(this) }
|
||||
valueToToFrom = { telegramAdminsSerializationFormat.decodeFromString(AdministratorChatMember.serializer(), this) }
|
||||
),
|
||||
ExposedKeyValueRepo(
|
||||
database,
|
||||
@@ -65,9 +65,9 @@ fun TelegramBot.createAdminsCacheAPI(
|
||||
"DynamicAdminsCacheSettingsAPI"
|
||||
).withMapper<ChatId, AdminsCacheSettings, Identifier, String>(
|
||||
keyFromToTo = { chatId },
|
||||
valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(this) },
|
||||
valueFromToTo = { telegramAdminsSerializationFormat.encodeToString(AdminsCacheSettings.serializer() , this) },
|
||||
keyToToFrom = { toChatId() },
|
||||
valueToToFrom = { telegramAdminsSerializationFormat.decodeFromString(this) }
|
||||
valueToToFrom = { telegramAdminsSerializationFormat.decodeFromString(AdminsCacheSettings.serializer() , this) }
|
||||
),
|
||||
scope
|
||||
)
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<manifest package="dev.inmo.tgbotapi.libraries.cache.admins.micro_utils"/>
|
||||
3
cache/admins/plagubot/build.gradle
vendored
3
cache/admins/plagubot/build.gradle
vendored
@@ -1,10 +1,9 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
id "com.android.library"
|
||||
}
|
||||
|
||||
apply from: "$mppProjectWithSerializationPresetPath"
|
||||
apply from: "$mppJavaWithJsProjectPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<manifest package="dev.inmo.tgbotapi.libraries.cache.admins.plagubot"/>
|
||||
3
cache/content/common/build.gradle
vendored
3
cache/content/common/build.gradle
vendored
@@ -1,10 +1,9 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
id "com.android.library"
|
||||
}
|
||||
|
||||
apply from: "$mppProjectWithSerializationPresetPath"
|
||||
apply from: "$mppJavaWithJsProjectPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<manifest package="dev.inmo.tgbotapi.libraries.cache.content.common"/>
|
||||
3
cache/content/micro_utils/build.gradle
vendored
3
cache/content/micro_utils/build.gradle
vendored
@@ -1,10 +1,9 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
id "com.android.library"
|
||||
}
|
||||
|
||||
apply from: "$mppProjectWithSerializationPresetPath"
|
||||
apply from: "$mppJavaWithJsProjectPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<manifest package="dev.inmo.tgbotapi.libraries.cache.content.micro_utils"/>
|
||||
@@ -1,40 +0,0 @@
|
||||
apply plugin: 'com.getkeepsafe.dexcount'
|
||||
|
||||
android {
|
||||
compileSdkVersion "$android_compileSdkVersion".toInteger()
|
||||
buildToolsVersion "$android_buildToolsVersion"
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion "$android_minSdkVersion".toInteger()
|
||||
targetSdkVersion "$android_compileSdkVersion".toInteger()
|
||||
versionCode "${android_code_version}".toInteger()
|
||||
versionName "$version"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
}
|
||||
debug {
|
||||
debuggable true
|
||||
}
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
exclude 'META-INF/kotlinx-serialization-runtime.kotlin_module'
|
||||
exclude 'META-INF/kotlinx-serialization-cbor.kotlin_module'
|
||||
exclude 'META-INF/kotlinx-serialization-properties.kotlin_module'
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = JavaVersion.VERSION_1_8.toString()
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
}
|
||||
}
|
||||
@@ -13,11 +13,7 @@ allprojects {
|
||||
projectByName(name)
|
||||
}
|
||||
|
||||
mppProjectWithSerializationPresetPath = "${rootProject.projectDir.absolutePath}/mppProjectWithSerialization.gradle"
|
||||
mppJavaProjectPresetPath = "${rootProject.projectDir.absolutePath}/mppJavaProject.gradle"
|
||||
mppAndroidProjectPresetPath = "${rootProject.projectDir.absolutePath}/mppAndroidProject.gradle"
|
||||
|
||||
defaultAndroidSettingsPresetPath = "${rootProject.projectDir.absolutePath}/defaultAndroidSettings.gradle"
|
||||
mppJavaWithJsProjectPath = "${rootProject.projectDir.absolutePath}/mppJavaWithJsProject.gradle"
|
||||
|
||||
publishGradlePath = "${rootProject.projectDir.absolutePath}/publish.gradle"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
org.gradle.jvmargs=-Xmx512m
|
||||
kotlin.code.style=official
|
||||
org.gradle.parallel=true
|
||||
kotlin.js.generate.externals=true
|
||||
@@ -6,32 +7,22 @@ kotlin.incremental.js=true
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
kotlin_version=1.7.10
|
||||
kotlin_serialisation_core_version=1.4.0
|
||||
|
||||
kotlin_version=1.7.20
|
||||
kotlin_serialisation_core_version=1.4.1
|
||||
|
||||
github_release_plugin_version=2.4.1
|
||||
|
||||
tgbotapi_version=3.2.1
|
||||
micro_utils_version=0.12.11
|
||||
tgbotapi_version=3.3.1
|
||||
micro_utils_version=0.13.2
|
||||
exposed_version=0.39.2
|
||||
plagubot_version=2.3.1
|
||||
|
||||
# ANDROID
|
||||
|
||||
android_minSdkVersion=21
|
||||
android_compileSdkVersion=32
|
||||
android_buildToolsVersion=32.0.0
|
||||
dexcount_version=3.1.0
|
||||
junit_version=4.12
|
||||
test_ext_junit_version=1.1.3
|
||||
espresso_core=3.4.0
|
||||
plagubot_version=2.4.1
|
||||
|
||||
# Dokka
|
||||
|
||||
dokka_version=1.7.10
|
||||
dokka_version=1.7.20
|
||||
|
||||
# Project data
|
||||
|
||||
group=dev.inmo
|
||||
version=0.5.3
|
||||
android_code_version=30
|
||||
version=0.5.7
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
project.version = "$version"
|
||||
project.group = "$group"
|
||||
|
||||
apply from: "$publishGradlePath"
|
||||
|
||||
kotlin {
|
||||
android {
|
||||
publishAllLibraryVariants()
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
implementation kotlin('stdlib')
|
||||
}
|
||||
}
|
||||
commonTest {
|
||||
dependencies {
|
||||
implementation kotlin('test-common')
|
||||
implementation kotlin('test-annotations-common')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
apply from: "$defaultAndroidSettingsPresetPath"
|
||||
@@ -1,39 +0,0 @@
|
||||
project.version = "$version"
|
||||
project.group = "$group"
|
||||
|
||||
apply from: "$publishGradlePath"
|
||||
|
||||
kotlin {
|
||||
jvm {
|
||||
compilations.main {
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
implementation kotlin('stdlib')
|
||||
}
|
||||
}
|
||||
commonTest {
|
||||
dependencies {
|
||||
implementation kotlin('test-common')
|
||||
implementation kotlin('test-annotations-common')
|
||||
}
|
||||
}
|
||||
|
||||
jvmTest {
|
||||
dependencies {
|
||||
implementation kotlin('test-junit')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
java {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
@@ -15,9 +15,6 @@ kotlin {
|
||||
browser()
|
||||
nodejs()
|
||||
}
|
||||
android {
|
||||
publishAllLibraryVariants()
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
commonMain {
|
||||
@@ -43,13 +40,6 @@ kotlin {
|
||||
implementation kotlin('test-junit')
|
||||
}
|
||||
}
|
||||
androidTest {
|
||||
dependencies {
|
||||
implementation kotlin('test-junit')
|
||||
implementation "androidx.test.ext:junit:$test_ext_junit_version"
|
||||
implementation "androidx.test.espresso:espresso-core:$espresso_core"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,5 +47,3 @@ java {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
apply from: "$defaultAndroidSettingsPresetPath"
|
||||
Reference in New Issue
Block a user