mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-11-22 08:13:47 +00:00
commit
68d971f874
@ -1,5 +1,14 @@
|
|||||||
# TelegramBotAPI changelog
|
# TelegramBotAPI changelog
|
||||||
|
|
||||||
|
## 0.29.2
|
||||||
|
|
||||||
|
* `Common`:
|
||||||
|
* Version updates:
|
||||||
|
* `Coroutines`: `1.3.9` -> `1.4.0`
|
||||||
|
* Internal broadcast channels were replaced with `SharedFlow`
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Extension `ReceiveChannel#debounceByValue` has been deprecated
|
||||||
|
|
||||||
## 0.29.1
|
## 0.29.1
|
||||||
|
|
||||||
* `Common`:
|
* `Common`:
|
||||||
|
@ -6,7 +6,7 @@ kotlin.incremental=true
|
|||||||
kotlin.incremental.js=true
|
kotlin.incremental.js=true
|
||||||
|
|
||||||
kotlin_version=1.4.10
|
kotlin_version=1.4.10
|
||||||
kotlin_coroutines_version=1.3.9
|
kotlin_coroutines_version=1.4.0
|
||||||
kotlin_serialisation_runtime_version=1.0.0
|
kotlin_serialisation_runtime_version=1.0.0
|
||||||
klock_version=1.12.1
|
klock_version=1.12.1
|
||||||
uuid_version=0.2.2
|
uuid_version=0.2.2
|
||||||
@ -15,7 +15,7 @@ ktor_version=1.4.1
|
|||||||
javax_activation_version=1.1.1
|
javax_activation_version=1.1.1
|
||||||
|
|
||||||
library_group=dev.inmo
|
library_group=dev.inmo
|
||||||
library_version=0.29.1
|
library_version=0.29.2
|
||||||
|
|
||||||
gradle_bintray_plugin_version=1.8.5
|
gradle_bintray_plugin_version=1.8.5
|
||||||
github_release_plugin_version=2.2.12
|
github_release_plugin_version=2.2.12
|
||||||
|
@ -5,21 +5,20 @@ import dev.inmo.tgbotapi.types.update.*
|
|||||||
import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.*
|
import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.*
|
||||||
import dev.inmo.tgbotapi.types.update.abstracts.UnknownUpdate
|
import dev.inmo.tgbotapi.types.update.abstracts.UnknownUpdate
|
||||||
import dev.inmo.tgbotapi.types.update.abstracts.Update
|
import dev.inmo.tgbotapi.types.update.abstracts.Update
|
||||||
import kotlinx.coroutines.channels.BroadcastChannel
|
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
|
|
||||||
@Suppress("EXPERIMENTAL_API_USAGE", "unused")
|
@Suppress("EXPERIMENTAL_API_USAGE", "unused")
|
||||||
class FlowsUpdatesFilter(
|
class FlowsUpdatesFilter(
|
||||||
broadcastChannelsSize: Int = 100
|
broadcastChannelsSize: Int = 100
|
||||||
): UpdatesFilter {
|
): UpdatesFilter {
|
||||||
private val updatesReceivingChannel = BroadcastChannel<Update>(broadcastChannelsSize)
|
private val updatesSharedFlow = MutableSharedFlow<Update>(extraBufferCapacity = broadcastChannelsSize)
|
||||||
@Suppress("MemberVisibilityCanBePrivate")
|
@Suppress("MemberVisibilityCanBePrivate")
|
||||||
val allUpdatesFlow: Flow<Update> = updatesReceivingChannel.asFlow()
|
val allUpdatesFlow: Flow<Update> = updatesSharedFlow.asSharedFlow()
|
||||||
|
|
||||||
override val allowedUpdates: List<String>
|
override val allowedUpdates: List<String>
|
||||||
get() = ALL_UPDATES_LIST
|
get() = ALL_UPDATES_LIST
|
||||||
override val asUpdateReceiver: UpdateReceiver<Update> = {
|
override val asUpdateReceiver: UpdateReceiver<Update> = {
|
||||||
updatesReceivingChannel.send(it)
|
updatesSharedFlow.emit(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
val messageFlow: Flow<MessageUpdate> = allUpdatesFlow.filterIsInstance()
|
val messageFlow: Flow<MessageUpdate> = allUpdatesFlow.filterIsInstance()
|
||||||
|
@ -11,6 +11,7 @@ private sealed class DebounceAction<T> {
|
|||||||
private data class AddValue<T>(override val value: T) : DebounceAction<T>()
|
private data class AddValue<T>(override val value: T) : DebounceAction<T>()
|
||||||
private data class RemoveJob<T>(override val value: T, val job: Job) : DebounceAction<T>()
|
private data class RemoveJob<T>(override val value: T, val job: Job) : DebounceAction<T>()
|
||||||
|
|
||||||
|
@Deprecated("Unused and will be removed in next major release")
|
||||||
fun <T> ReceiveChannel<T>.debounceByValue(
|
fun <T> ReceiveChannel<T>.debounceByValue(
|
||||||
delayMillis: Long,
|
delayMillis: Long,
|
||||||
scope: CoroutineScope = CoroutineScope(Dispatchers.Default),
|
scope: CoroutineScope = CoroutineScope(Dispatchers.Default),
|
||||||
|
@ -2,7 +2,6 @@ package dev.inmo.tgbotapi.extensions.utils
|
|||||||
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.channels.BroadcastChannel
|
import kotlinx.coroutines.channels.BroadcastChannel
|
||||||
import kotlinx.coroutines.channels.Channel
|
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -11,15 +10,15 @@ import kotlinx.coroutines.flow.*
|
|||||||
fun <T> aggregateFlows(
|
fun <T> aggregateFlows(
|
||||||
withScope: CoroutineScope,
|
withScope: CoroutineScope,
|
||||||
vararg flows: Flow<T>,
|
vararg flows: Flow<T>,
|
||||||
internalBufferSize: Int = Channel.BUFFERED
|
internalBufferSize: Int = 64
|
||||||
): Flow<T> {
|
): Flow<T> {
|
||||||
val bc = BroadcastChannel<T>(internalBufferSize)
|
val sharedFlow = MutableSharedFlow<T>(extraBufferCapacity = internalBufferSize)
|
||||||
flows.forEach {
|
flows.forEach {
|
||||||
it.onEach {
|
it.onEach {
|
||||||
safely { bc.send(it) }
|
safely { sharedFlow.emit(it) }
|
||||||
}.launchIn(withScope)
|
}.launchIn(withScope)
|
||||||
}
|
}
|
||||||
return bc.asFlow()
|
return sharedFlow
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T> Flow<Iterable<T>>.flatMap(): Flow<T> = flow {
|
fun <T> Flow<Iterable<T>>.flatMap(): Flow<T> = flow {
|
||||||
|
Loading…
Reference in New Issue
Block a user