From 4cb30526e90925bdd111a01c790218dbaee6e8d2 Mon Sep 17 00:00:00 2001 From: LTFan Date: Sat, 13 Apr 2024 18:25:51 +0800 Subject: [PATCH] feat: add constructor to IdMessageFlow --- .../kotlin/xyz/xfqlittlefan/fhraise/browser/BrowserFlow.kt | 3 +-- .../kotlin/xyz/xfqlittlefan/fhraise/flow/IdMessageFlow.kt | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/compose-app/src/androidMain/kotlin/xyz/xfqlittlefan/fhraise/browser/BrowserFlow.kt b/compose-app/src/androidMain/kotlin/xyz/xfqlittlefan/fhraise/browser/BrowserFlow.kt index 573b04b..842be79 100644 --- a/compose-app/src/androidMain/kotlin/xyz/xfqlittlefan/fhraise/browser/BrowserFlow.kt +++ b/compose-app/src/androidMain/kotlin/xyz/xfqlittlefan/fhraise/browser/BrowserFlow.kt @@ -19,12 +19,11 @@ package xyz.xfqlittlefan.fhraise.browser import android.content.Context -import kotlinx.coroutines.flow.MutableSharedFlow import xyz.xfqlittlefan.fhraise.flow.IdMessageFlow import java.util.* val newBrowserFlowId get() = UUID.randomUUID().toString() -val browserFlow = IdMessageFlow(MutableSharedFlow(replay = 1, extraBufferCapacity = 1)) +val browserFlow = IdMessageFlow(1, 1) sealed class BrowserMessage { data object Ready : BrowserMessage() diff --git a/shared/src/commonMain/kotlin/xyz/xfqlittlefan/fhraise/flow/IdMessageFlow.kt b/shared/src/commonMain/kotlin/xyz/xfqlittlefan/fhraise/flow/IdMessageFlow.kt index 217d9b5..ad03e5b 100644 --- a/shared/src/commonMain/kotlin/xyz/xfqlittlefan/fhraise/flow/IdMessageFlow.kt +++ b/shared/src/commonMain/kotlin/xyz/xfqlittlefan/fhraise/flow/IdMessageFlow.kt @@ -18,11 +18,16 @@ package xyz.xfqlittlefan.fhraise.flow +import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.flow.* open class IdMessageFlow( mutableSharedFlow: MutableSharedFlow> = MutableSharedFlow() ) : MutableSharedFlow> by mutableSharedFlow { + constructor( + replay: Int = 0, extraBufferCapacity: Int = 0, onBufferOverflow: BufferOverflow = BufferOverflow.SUSPEND + ) : this(MutableSharedFlow(replay, extraBufferCapacity, onBufferOverflow)) + suspend inline fun collect(id: I, block: FlowCollector) = block.emitAll(filter { it.first == id }.map { it.second })