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

small refactor

This commit is contained in:
InsanusMokrassar 2022-05-02 08:49:58 +06:00
parent 619c82bb32
commit 484e09374d

View File

@ -90,7 +90,7 @@ class DefaultBehaviourContext(
onBufferOverflow: BufferOverflow, onBufferOverflow: BufferOverflow,
upstreamUpdatesFlow: Flow<Update>?, upstreamUpdatesFlow: Flow<Update>?,
updatesFilter: BehaviourContextAndTypeReceiver<Boolean, Update>? updatesFilter: BehaviourContextAndTypeReceiver<Boolean, Update>?
): BehaviourContext = DefaultBehaviourContext(bot, scope, broadcastChannelsSize, onBufferOverflow, upstreamUpdatesFlow, updatesFilter) ): DefaultBehaviourContext = DefaultBehaviourContext(bot, scope, broadcastChannelsSize, onBufferOverflow, upstreamUpdatesFlow, updatesFilter)
} }
fun BehaviourContext( fun BehaviourContext(
@ -116,19 +116,20 @@ suspend fun <T, BC : BehaviourContext> BC.doInSubContextWithUpdatesFilter(
updatesUpstreamFlow: Flow<Update> = allUpdatesFlow, updatesUpstreamFlow: Flow<Update> = allUpdatesFlow,
scope: CoroutineScope = LinkedSupervisorScope(), scope: CoroutineScope = LinkedSupervisorScope(),
behaviourContextReceiver: CustomBehaviourContextReceiver<BC, T> behaviourContextReceiver: CustomBehaviourContextReceiver<BC, T>
): T = copy( ): T {
scope = scope, val newContext = copy(
updatesFilter = updatesFilter ?.let { _ -> scope = scope,
{ updatesFilter = updatesFilter ?.let { _ ->
(this as? BC) ?.run { {
updatesFilter(it) (this as? BC) ?.run {
} ?: true updatesFilter(it)
} } ?: true
}, }
upstreamUpdatesFlow = updatesUpstreamFlow },
).run { upstreamUpdatesFlow = updatesUpstreamFlow
withContext(coroutineContext) { ) as BC
(this@run as BC).behaviourContextReceiver().also { if (stopOnCompletion) stop() } return withContext(currentCoroutineContext()) {
newContext.behaviourContextReceiver().also { if (stopOnCompletion) newContext.stop() }
} }
} }