continue to adding workaround
This commit is contained in:
features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions
server
settings.gradletargets/telegram/loader
client
build.gradle
src
common
build.gradle
src
server
18
targets/telegram/loader/client/build.gradle
Normal file
18
targets/telegram/loader/client/build.gradle
Normal file
@ -0,0 +1,18 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
id "com.android.library"
|
||||
}
|
||||
|
||||
apply from: "$mppProjectWithSerializationPresetPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
api project(":postssystem.targets.telegram.loader.common")
|
||||
api project(":postssystem.features.common.client")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
0
targets/telegram/loader/client/src/commonMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/client/.gitkeep
Normal file
0
targets/telegram/loader/client/src/commonMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/client/.gitkeep
Normal file
@ -0,0 +1 @@
|
||||
<manifest package="dev.inmo.postssystem.targets.telegram.loader.client"/>
|
17
targets/telegram/loader/common/build.gradle
Normal file
17
targets/telegram/loader/common/build.gradle
Normal file
@ -0,0 +1,17 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
id "com.android.library"
|
||||
}
|
||||
|
||||
apply from: "$mppProjectWithSerializationPresetPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
api project(":postssystem.features.common.common")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
0
targets/telegram/loader/common/src/commonMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/common/.gitkeep
Normal file
0
targets/telegram/loader/common/src/commonMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/common/.gitkeep
Normal file
@ -0,0 +1 @@
|
||||
<manifest package="dev.inmo.postssystem.targets.telegram.loader.common"/>
|
18
targets/telegram/loader/server/build.gradle
Normal file
18
targets/telegram/loader/server/build.gradle
Normal file
@ -0,0 +1,18 @@
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.multiplatform"
|
||||
id "org.jetbrains.kotlin.plugin.serialization"
|
||||
}
|
||||
|
||||
apply from: "$mppJavaProjectPresetPath"
|
||||
|
||||
kotlin {
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
api project(":postssystem.targets.telegram.loader.common")
|
||||
api project(":postssystem.targets.telegram.publication.server")
|
||||
api project(":postssystem.features.common.server")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
21
targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/SubConfig.kt
Normal file
21
targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/SubConfig.kt
Normal file
@ -0,0 +1,21 @@
|
||||
package dev.inmo.postssystem.targets.telegram.loader.server
|
||||
|
||||
import dev.inmo.tgbotapi.bot.Ktor.telegramBot
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper
|
||||
import dev.inmo.tgbotapi.utils.telegramBotAPIDefaultUrl
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class SubConfig(
|
||||
private val botToken: String,
|
||||
val targetChatId: ChatId,
|
||||
private val hostUrl: String = telegramBotAPIDefaultUrl
|
||||
) {
|
||||
val telegramInfo by lazy {
|
||||
TelegramAPIUrlsKeeper(botToken, hostUrl)
|
||||
}
|
||||
val bot by lazy {
|
||||
telegramBot(telegramInfo)
|
||||
}
|
||||
}
|
33
targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/TelegramTargetModuleLoader.kt
Normal file
33
targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/TelegramTargetModuleLoader.kt
Normal file
@ -0,0 +1,33 @@
|
||||
package dev.inmo.postssystem.targets.telegram.loader.server
|
||||
|
||||
import dev.inmo.postssystem.features.common.common.singleWithRandomQualifier
|
||||
import dev.inmo.postssystem.features.common.server.sessions.ModuleLoader
|
||||
import dev.inmo.postssystem.features.publication.server.PublicationTarget
|
||||
import dev.inmo.postssystem.targets.telegram.publication.server.PublicationTargetTelegram
|
||||
import dev.inmo.tgbotapi.bot.TelegramBot
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
import org.koin.core.module.Module
|
||||
import org.koin.core.qualifier.StringQualifier
|
||||
|
||||
/**
|
||||
* Expects to get a config from a field "telegram" of your config
|
||||
*/
|
||||
class TelegramTargetModuleLoader : ModuleLoader {
|
||||
override fun Module.load(config: JsonObject) {
|
||||
val configJson = config["telegram"]
|
||||
|
||||
val postingChatIdQualifier = StringQualifier("telegram_postingChatId")
|
||||
|
||||
configJson ?.let {
|
||||
single<SubConfig> { get<Json>().decodeFromJsonElement(SubConfig.serializer(), configJson) }
|
||||
single<TelegramBot> { get<SubConfig>().bot }
|
||||
single<ChatId>(postingChatIdQualifier) { get<SubConfig>().targetChatId }
|
||||
|
||||
singleWithRandomQualifier<PublicationTarget> {
|
||||
PublicationTargetTelegram(get(), get(postingChatIdQualifier))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user