continue to adding workaround

This commit is contained in:
2022-03-11 20:37:40 +06:00
parent a06324568e
commit f683809f29
15 changed files with 161 additions and 12 deletions

View 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")
}
}
}
}

View File

@@ -0,0 +1 @@
<manifest package="dev.inmo.postssystem.targets.telegram.loader.client"/>

View 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")
}
}
}
}

View File

@@ -0,0 +1 @@
<manifest package="dev.inmo.postssystem.targets.telegram.loader.common"/>

View 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")
}
}
}
}

View 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)
}
}

View 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))
}
}
}
}