1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-06-03 00:15:27 +00:00

Merge pull request #155 from InsanusMokrassar/0.29.2

0.29.2
This commit is contained in:
InsanusMokrassar 2020-10-27 15:55:17 +06:00 committed by GitHub
commit 68d971f874
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 19 additions and 11 deletions

View File

@ -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`:

View File

@ -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

View File

@ -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()

View File

@ -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),

View File

@ -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 {