diff --git a/CHANGELOG.md b/CHANGELOG.md index ffdaa4b..05a8b7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # PlaguPoster +## 0.2.3 + +* Add opportunity to use several target chat ids +* Update dependencies + ## 0.2.2 * `GarbageCollector`: diff --git a/common/src/commonMain/kotlin/ChatConfig.kt b/common/src/commonMain/kotlin/ChatConfig.kt index 181deb1..dc09bb0 100644 --- a/common/src/commonMain/kotlin/ChatConfig.kt +++ b/common/src/commonMain/kotlin/ChatConfig.kt @@ -1,6 +1,5 @@ package dev.inmo.plaguposter.common -import dev.inmo.tgbotapi.types.ChatId import dev.inmo.tgbotapi.types.FullChatIdentifierSerializer import dev.inmo.tgbotapi.types.IdChatIdentifier import kotlinx.serialization.SerialName @@ -10,14 +9,26 @@ import kotlinx.serialization.Serializable data class ChatConfig( @SerialName("targetChat") @Serializable(FullChatIdentifierSerializer::class) - val targetChatId: IdChatIdentifier, + val targetChatId: IdChatIdentifier? = null, @SerialName("sourceChat") @Serializable(FullChatIdentifierSerializer::class) val sourceChatId: IdChatIdentifier, @SerialName("cacheChat") @Serializable(FullChatIdentifierSerializer::class) - val cacheChatId: IdChatIdentifier + val cacheChatId: IdChatIdentifier, + @SerialName("targetChats") + val targetChatIds: List<@Serializable(FullChatIdentifierSerializer::class) IdChatIdentifier> = emptyList(), ) { + val allTargetChatIds by lazy { + listOfNotNull(targetChatId) + targetChatIds + } + + init { + require(targetChatId != null || targetChatIds.isNotEmpty()) { + "One of fields, 'targetChat' or 'targetChats' should be presented" + } + } + fun check(chatId: IdChatIdentifier) = when (chatId) { targetChatId, sourceChatId, diff --git a/common/src/commonMain/kotlin/DateTimeSerializer.kt b/common/src/commonMain/kotlin/DateTimeSerializer.kt index a4a3ec4..0251600 100644 --- a/common/src/commonMain/kotlin/DateTimeSerializer.kt +++ b/common/src/commonMain/kotlin/DateTimeSerializer.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.common -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializer import kotlinx.serialization.builtins.serializer diff --git a/common/src/jvmMain/kotlin/CommonPlugin.kt b/common/src/jvmMain/kotlin/CommonPlugin.kt index 9f55aa6..5324019 100644 --- a/common/src/jvmMain/kotlin/CommonPlugin.kt +++ b/common/src/jvmMain/kotlin/CommonPlugin.kt @@ -1,6 +1,5 @@ package dev.inmo.plaguposter.common -import dev.inmo.kslog.common.i import dev.inmo.kslog.common.iS import dev.inmo.kslog.common.logger import dev.inmo.plagubot.Plugin @@ -27,7 +26,7 @@ object CommonPlugin : Plugin { override suspend fun BehaviourContext.setupBotPlugin(koin: Koin) { val config = koin.get() - Log.iS { "Target chat info: ${getChat(config.targetChatId)}" } + Log.iS { "Target chats info: ${config.allTargetChatIds.map { getChat(it) }.joinToString()}" } Log.iS { "Source chat info: ${getChat(config.sourceChatId)}" } Log.iS { "Cache chat info: ${getChat(config.cacheChatId)}" } } diff --git a/gradle.properties b/gradle.properties index 968ed54..0c5a141 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,4 +10,4 @@ android.enableJetifier=true # Project data group=dev.inmo -version=0.2.2 +version=0.2.3 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ee7cbd8..bf3de3e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,16 +1,16 @@ [versions] -kotlin = "1.8.21" -kotlin-serialization = "1.5.0" +kotlin = "1.8.22" +kotlin-serialization = "1.5.1" -plagubot = "5.1.2" -tgbotapi = "7.1.2" -microutils = "0.18.1" -kslog = "1.1.1" -krontab = "1.0.0" -plagubot-plugins = "0.11.2" +plagubot = "7.0.0" +tgbotapi = "9.0.0" +microutils = "0.19.9" +kslog = "1.1.2" +krontab = "2.1.2" +plagubot-plugins = "0.13.0" -dokka = "1.8.10" +dokka = "1.8.20" psql = "42.6.0" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 070cb70..98debb8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/posts/src/commonMain/kotlin/models/Post.kt b/posts/src/commonMain/kotlin/models/Post.kt index d624964..3445b2b 100644 --- a/posts/src/commonMain/kotlin/models/Post.kt +++ b/posts/src/commonMain/kotlin/models/Post.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.posts.models -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.plaguposter.common.DateTimeSerializer import dev.inmo.tgbotapi.types.ChatId import kotlinx.serialization.Serializable diff --git a/posts/src/commonMain/kotlin/repo/ReadPostsRepo.kt b/posts/src/commonMain/kotlin/repo/ReadPostsRepo.kt index 7d0c5d1..b161282 100644 --- a/posts/src/commonMain/kotlin/repo/ReadPostsRepo.kt +++ b/posts/src/commonMain/kotlin/repo/ReadPostsRepo.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.posts.repo -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.micro_utils.repos.ReadCRUDRepo import dev.inmo.plaguposter.posts.models.* import dev.inmo.tgbotapi.types.ChatId diff --git a/posts/src/commonMain/kotlin/sending/PostPublisher.kt b/posts/src/commonMain/kotlin/sending/PostPublisher.kt index 3073c03..3d3d736 100644 --- a/posts/src/commonMain/kotlin/sending/PostPublisher.kt +++ b/posts/src/commonMain/kotlin/sending/PostPublisher.kt @@ -18,7 +18,7 @@ class PostPublisher( private val bot: TelegramBot, private val postsRepo: PostsRepo, private val cachingChatId: IdChatIdentifier, - private val targetChatId: IdChatIdentifier, + private val targetChatIds: List, private val deleteAfterPosting: Boolean = true ) { suspend fun publish(postId: PostId) { @@ -38,17 +38,19 @@ class PostPublisher( sortedMessagesContents.forEach { (_, contents) -> contents.singleOrNull() ?.also { - runCatching { - bot.copyMessage(targetChatId, it.chatId, it.messageId) - }.onFailure { _ -> + targetChatIds.forEach { targetChatId -> runCatching { - bot.forwardMessage( - it.chatId, - targetChatId, - it.messageId - ) - }.onSuccess { - bot.copyMessage(targetChatId, it) + bot.copyMessage(targetChatId, it.chatId, it.messageId) + }.onFailure { _ -> + runCatching { + bot.forwardMessage( + it.chatId, + targetChatId, + it.messageId + ) + }.onSuccess { + bot.copyMessage(targetChatId, it) + } } } return@forEach @@ -57,17 +59,23 @@ class PostPublisher( it.order to (bot.forwardMessage(toChatId = cachingChatId, fromChatId = it.chatId, messageId = it.messageId).contentMessageOrNull() ?: return@mapNotNull null) }.sortedBy { it.first }.mapNotNull { (_, forwardedMessage) -> forwardedMessage.withContentOrNull() ?: null.also { _ -> - bot.copyMessage(targetChatId, forwardedMessage) + targetChatIds.forEach { targetChatId -> + bot.copyMessage(targetChatId, forwardedMessage) + } } } resultContents.singleOrNull() ?.also { - bot.copyMessage(targetChatId, it) + targetChatIds.forEach { targetChatId -> + bot.copyMessage(targetChatId, it) + } return@forEach } ?: resultContents.chunked(mediaCountInMediaGroup.last).forEach { - bot.send( - targetChatId, - it.map { it.content.toMediaGroupMemberTelegramMedia() } - ) + targetChatIds.forEach { targetChatId -> + bot.send( + targetChatId, + it.map { it.content.toMediaGroupMemberTelegramMedia() } + ) + } } } diff --git a/posts/src/jvmMain/kotlin/Plugin.kt b/posts/src/jvmMain/kotlin/Plugin.kt index 047094a..61eb501 100644 --- a/posts/src/jvmMain/kotlin/Plugin.kt +++ b/posts/src/jvmMain/kotlin/Plugin.kt @@ -29,7 +29,6 @@ import kotlinx.serialization.json.* import org.jetbrains.exposed.sql.Database import org.koin.core.Koin import org.koin.core.module.Module -import org.koin.dsl.binds object Plugin : Plugin { @Serializable @@ -59,7 +58,7 @@ object Plugin : Plugin { } single { val config = get() - PostPublisher(get(), get(), config.chats.cacheChatId, config.chats.targetChatId, config.deleteAfterPublishing) + PostPublisher(get(), get(), config.chats.cacheChatId, config.chats.allTargetChatIds, config.deleteAfterPublishing) } } diff --git a/posts/src/jvmMain/kotlin/cached/CachedPostsRepo.kt b/posts/src/jvmMain/kotlin/cached/CachedPostsRepo.kt index 1d69be4..a410201 100644 --- a/posts/src/jvmMain/kotlin/cached/CachedPostsRepo.kt +++ b/posts/src/jvmMain/kotlin/cached/CachedPostsRepo.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.posts.cached -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.micro_utils.pagination.FirstPagePagination import dev.inmo.micro_utils.pagination.firstPageWithOneElementPagination import dev.inmo.micro_utils.pagination.utils.doForAllWithNextPaging @@ -25,6 +25,7 @@ class CachedPostsRepo( parentRepo, kvCache, scope, + skipStartInvalidate = false, { it.id } ) { override val removedPostsFlow: Flow by parentRepo::removedPostsFlow diff --git a/posts/src/jvmMain/kotlin/exposed/ExposedPostsRepo.kt b/posts/src/jvmMain/kotlin/exposed/ExposedPostsRepo.kt index 170b505..84fc4a9 100644 --- a/posts/src/jvmMain/kotlin/exposed/ExposedPostsRepo.kt +++ b/posts/src/jvmMain/kotlin/exposed/ExposedPostsRepo.kt @@ -1,7 +1,7 @@ package dev.inmo.plaguposter.posts.exposed import com.benasher44.uuid.uuid4 -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.micro_utils.repos.KeyValuesRepo import dev.inmo.micro_utils.repos.UpdatedValuePair import dev.inmo.micro_utils.repos.exposed.AbstractExposedCRUDRepo diff --git a/ratings/gc/src/jvmMain/kotlin/Plugin.kt b/ratings/gc/src/jvmMain/kotlin/Plugin.kt index 77f9ad9..f3d377c 100644 --- a/ratings/gc/src/jvmMain/kotlin/Plugin.kt +++ b/ratings/gc/src/jvmMain/kotlin/Plugin.kt @@ -1,7 +1,7 @@ package dev.inmo.plaguposter.ratings.gc -import com.soywiz.klock.DateTime -import com.soywiz.klock.seconds +import korlibs.time.DateTime +import korlibs.time.seconds import dev.inmo.krontab.KrontabTemplate import dev.inmo.krontab.toSchedule import dev.inmo.krontab.utils.asFlowWithDelays diff --git a/ratings/selector/src/commonMain/kotlin/DefaultSelector.kt b/ratings/selector/src/commonMain/kotlin/DefaultSelector.kt index fafeb3f..a1195df 100644 --- a/ratings/selector/src/commonMain/kotlin/DefaultSelector.kt +++ b/ratings/selector/src/commonMain/kotlin/DefaultSelector.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.ratings.selector -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.plaguposter.posts.models.PostId import dev.inmo.plaguposter.posts.repo.PostsRepo import dev.inmo.plaguposter.ratings.repo.RatingsRepo diff --git a/ratings/selector/src/commonMain/kotlin/Selector.kt b/ratings/selector/src/commonMain/kotlin/Selector.kt index 134f6b1..4d670b2 100644 --- a/ratings/selector/src/commonMain/kotlin/Selector.kt +++ b/ratings/selector/src/commonMain/kotlin/Selector.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.ratings.selector -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.plaguposter.posts.models.PostId interface Selector { diff --git a/ratings/selector/src/commonMain/kotlin/models/RatingConfig.kt b/ratings/selector/src/commonMain/kotlin/models/RatingConfig.kt index e21a9ab..4c8046d 100644 --- a/ratings/selector/src/commonMain/kotlin/models/RatingConfig.kt +++ b/ratings/selector/src/commonMain/kotlin/models/RatingConfig.kt @@ -1,7 +1,7 @@ package dev.inmo.plaguposter.ratings.selector.models -import com.soywiz.klock.DateTime -import com.soywiz.klock.seconds +import korlibs.time.DateTime +import korlibs.time.seconds import dev.inmo.micro_utils.pagination.FirstPagePagination import dev.inmo.micro_utils.pagination.Pagination import dev.inmo.micro_utils.pagination.utils.getAllByWithNextPaging diff --git a/ratings/selector/src/commonMain/kotlin/models/SelectorConfig.kt b/ratings/selector/src/commonMain/kotlin/models/SelectorConfig.kt index da35cf5..30522e9 100644 --- a/ratings/selector/src/commonMain/kotlin/models/SelectorConfig.kt +++ b/ratings/selector/src/commonMain/kotlin/models/SelectorConfig.kt @@ -1,7 +1,7 @@ package dev.inmo.plaguposter.ratings.selector.models -import com.soywiz.klock.DateTime -import com.soywiz.klock.Time +import korlibs.time.DateTime +import korlibs.time.Time import kotlinx.serialization.Serializable @Serializable diff --git a/ratings/selector/src/commonMain/kotlin/models/TimeConfig.kt b/ratings/selector/src/commonMain/kotlin/models/TimeConfig.kt index 826b579..a8d720b 100644 --- a/ratings/selector/src/commonMain/kotlin/models/TimeConfig.kt +++ b/ratings/selector/src/commonMain/kotlin/models/TimeConfig.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.ratings.selector.models -import com.soywiz.klock.* +import korlibs.time.* import kotlinx.serialization.* import kotlinx.serialization.builtins.serializer import kotlinx.serialization.descriptors.SerialDescriptor diff --git a/ratings/source/src/commonMain/kotlin/buttons/RootButtons.kt b/ratings/source/src/commonMain/kotlin/buttons/RootButtons.kt index 8931da9..ccba53c 100644 --- a/ratings/source/src/commonMain/kotlin/buttons/RootButtons.kt +++ b/ratings/source/src/commonMain/kotlin/buttons/RootButtons.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.ratings.source.buttons -import com.soywiz.klock.DateFormat +import korlibs.time.DateFormat import dev.inmo.kslog.common.TagLogger import dev.inmo.kslog.common.d import dev.inmo.kslog.common.i diff --git a/ratings/source/src/commonMain/kotlin/repos/CachedPollsToMessagesInfoRepo.kt b/ratings/source/src/commonMain/kotlin/repos/CachedPollsToMessagesInfoRepo.kt index dce3942..21c225a 100644 --- a/ratings/source/src/commonMain/kotlin/repos/CachedPollsToMessagesInfoRepo.kt +++ b/ratings/source/src/commonMain/kotlin/repos/CachedPollsToMessagesInfoRepo.kt @@ -1,9 +1,8 @@ package dev.inmo.plaguposter.ratings.source.repos import dev.inmo.micro_utils.repos.KeyValueRepo -import dev.inmo.micro_utils.repos.cache.KeyValueCacheRepo import dev.inmo.micro_utils.repos.cache.cache.FullKVCache -import dev.inmo.micro_utils.repos.cache.full.cached +import dev.inmo.micro_utils.repos.cache.full.fullyCached import dev.inmo.plaguposter.common.ShortMessageInfo import dev.inmo.tgbotapi.types.PollIdentifier import kotlinx.coroutines.CoroutineScope @@ -12,4 +11,4 @@ class CachedPollsToMessagesInfoRepo( private val repo: PollsToMessagesInfoRepo, private val scope: CoroutineScope, private val kvCache: FullKVCache = FullKVCache() -) : PollsToMessagesInfoRepo, KeyValueRepo by repo.cached(kvCache, scope) +) : PollsToMessagesInfoRepo, KeyValueRepo by repo.fullyCached(kvCache, scope) diff --git a/ratings/source/src/commonMain/kotlin/repos/CachedPollsToPostsIdsRepo.kt b/ratings/source/src/commonMain/kotlin/repos/CachedPollsToPostsIdsRepo.kt index 220eb51..9166181 100644 --- a/ratings/source/src/commonMain/kotlin/repos/CachedPollsToPostsIdsRepo.kt +++ b/ratings/source/src/commonMain/kotlin/repos/CachedPollsToPostsIdsRepo.kt @@ -2,8 +2,7 @@ package dev.inmo.plaguposter.ratings.source.repos import dev.inmo.micro_utils.repos.KeyValueRepo import dev.inmo.micro_utils.repos.cache.cache.FullKVCache -import dev.inmo.micro_utils.repos.cache.full.cached -import dev.inmo.plaguposter.common.ShortMessageInfo +import dev.inmo.micro_utils.repos.cache.full.fullyCached import dev.inmo.plaguposter.posts.models.PostId import dev.inmo.tgbotapi.types.PollIdentifier import kotlinx.coroutines.CoroutineScope @@ -12,4 +11,4 @@ class CachedPollsToPostsIdsRepo( private val repo: PollsToPostsIdsRepo, private val scope: CoroutineScope, private val kvCache: FullKVCache = FullKVCache() -) : PollsToPostsIdsRepo, KeyValueRepo by repo.cached(kvCache, scope) +) : PollsToPostsIdsRepo, KeyValueRepo by repo.fullyCached(kvCache, scope) diff --git a/triggers/selector_with_timer/src/commonMain/kotlin/AutopostFilter.kt b/triggers/selector_with_timer/src/commonMain/kotlin/AutopostFilter.kt index 66cd842..58e8978 100644 --- a/triggers/selector_with_timer/src/commonMain/kotlin/AutopostFilter.kt +++ b/triggers/selector_with_timer/src/commonMain/kotlin/AutopostFilter.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.triggers.selector_with_timer -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.plaguposter.posts.models.PostId fun interface AutopostFilter { diff --git a/triggers/selector_with_timer/src/jvmMain/kotlin/Plugin.kt b/triggers/selector_with_timer/src/jvmMain/kotlin/Plugin.kt index 79c8487..84f463b 100644 --- a/triggers/selector_with_timer/src/jvmMain/kotlin/Plugin.kt +++ b/triggers/selector_with_timer/src/jvmMain/kotlin/Plugin.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.triggers.selector_with_timer -import com.soywiz.klock.DateFormat +import korlibs.time.DateFormat import dev.inmo.krontab.KrontabTemplate import dev.inmo.krontab.toSchedule import dev.inmo.krontab.utils.asFlowWithDelays diff --git a/triggers/timer/src/commonMain/kotlin/ButtonsBuilder.kt b/triggers/timer/src/commonMain/kotlin/ButtonsBuilder.kt index efb2d30..30bd5eb 100644 --- a/triggers/timer/src/commonMain/kotlin/ButtonsBuilder.kt +++ b/triggers/timer/src/commonMain/kotlin/ButtonsBuilder.kt @@ -1,10 +1,10 @@ package dev.inmo.plaguposter.triggers.timer -import com.soywiz.klock.DateFormat -import com.soywiz.klock.DateTime -import com.soywiz.klock.DateTimeTz -import com.soywiz.klock.Month -import com.soywiz.klock.Year +import korlibs.time.DateFormat +import korlibs.time.DateTime +import korlibs.time.DateTimeTz +import korlibs.time.Month +import korlibs.time.Year import dev.inmo.micro_utils.coroutines.runCatchingSafely import dev.inmo.micro_utils.repos.unset import dev.inmo.plaguposter.common.SuccessfulSymbol diff --git a/triggers/timer/src/commonMain/kotlin/NearestAvailablePublishingTime.kt b/triggers/timer/src/commonMain/kotlin/NearestAvailablePublishingTime.kt index 55db364..63fdc87 100644 --- a/triggers/timer/src/commonMain/kotlin/NearestAvailablePublishingTime.kt +++ b/triggers/timer/src/commonMain/kotlin/NearestAvailablePublishingTime.kt @@ -1,7 +1,7 @@ package dev.inmo.plaguposter.triggers.timer -import com.soywiz.klock.DateTime -import com.soywiz.klock.minutes +import korlibs.time.DateTime +import korlibs.time.minutes fun nearestAvailableTimerTime() = (DateTime.now() + 1.minutes).copyDayOfMonth( milliseconds = 0, diff --git a/triggers/timer/src/commonMain/kotlin/TimersHandler.kt b/triggers/timer/src/commonMain/kotlin/TimersHandler.kt index 074108a..ce26046 100644 --- a/triggers/timer/src/commonMain/kotlin/TimersHandler.kt +++ b/triggers/timer/src/commonMain/kotlin/TimersHandler.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.triggers.timer -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions import dev.inmo.micro_utils.coroutines.plus import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions diff --git a/triggers/timer/src/commonMain/kotlin/TimersRepo.kt b/triggers/timer/src/commonMain/kotlin/TimersRepo.kt index f87dd6c..f62f682 100644 --- a/triggers/timer/src/commonMain/kotlin/TimersRepo.kt +++ b/triggers/timer/src/commonMain/kotlin/TimersRepo.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.triggers.timer -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.micro_utils.repos.KeyValueRepo import dev.inmo.plaguposter.posts.models.PostId diff --git a/triggers/timer/src/jvmMain/kotlin/Plugin.kt b/triggers/timer/src/jvmMain/kotlin/Plugin.kt index f305c53..f0c2602 100644 --- a/triggers/timer/src/jvmMain/kotlin/Plugin.kt +++ b/triggers/timer/src/jvmMain/kotlin/Plugin.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.triggers.timer -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.micro_utils.coroutines.runCatchingSafely import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions import dev.inmo.micro_utils.koin.singleWithRandomQualifierAndBinds diff --git a/triggers/timer/src/jvmMain/kotlin/repo/ExposedTimersRepo.kt b/triggers/timer/src/jvmMain/kotlin/repo/ExposedTimersRepo.kt index 425070c..e8baf87 100644 --- a/triggers/timer/src/jvmMain/kotlin/repo/ExposedTimersRepo.kt +++ b/triggers/timer/src/jvmMain/kotlin/repo/ExposedTimersRepo.kt @@ -1,6 +1,6 @@ package dev.inmo.plaguposter.triggers.timer.repo -import com.soywiz.klock.DateTime +import korlibs.time.DateTime import dev.inmo.micro_utils.common.firstNotNull import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions import dev.inmo.micro_utils.pagination.paginate