diff --git a/README.md b/README.md index b096f15..7f68f66 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![MAVEN](https://img.shields.io/badge/Maven-v2.1.2-blue) ![Platform](https://img.shields.io/badge/platform-android-green?color=lightgray) ![API](https://img.shields.io/badge/API-21-brightgreen?color=brightgreen) ![Platform](https://img.shields.io/badge/platform-desktop-green?color=lightgray) +![MAVEN](https://img.shields.io/badge/Maven-v2.2.0-blue) ![Platform](https://img.shields.io/badge/platform-android-green?color=lightgray) ![API](https://img.shields.io/badge/API-21-brightgreen?color=brightgreen) ![Platform](https://img.shields.io/badge/platform-desktop-green?color=lightgray)


diff --git a/brick/src/commonMain/kotlin/com/alphicc/brick/RouterConfig.kt b/brick/src/commonMain/kotlin/com/alphicc/brick/RouterConfig.kt new file mode 100644 index 0000000..acee094 --- /dev/null +++ b/brick/src/commonMain/kotlin/com/alphicc/brick/RouterConfig.kt @@ -0,0 +1,10 @@ +package com.alphicc.brick + +data class RouterConfig( + val broadcastFlowReplay: Int, + val broadcastFlowExtraBufferCapacity: Int +) { + companion object { + fun default(): RouterConfig = RouterConfig(broadcastFlowReplay = 1, broadcastFlowExtraBufferCapacity = 10) + } +} \ No newline at end of file diff --git a/brick/src/commonMain/kotlin/com/alphicc/brick/TreeRouter.kt b/brick/src/commonMain/kotlin/com/alphicc/brick/TreeRouter.kt index 989ea2e..8b7efb5 100644 --- a/brick/src/commonMain/kotlin/com/alphicc/brick/TreeRouter.kt +++ b/brick/src/commonMain/kotlin/com/alphicc/brick/TreeRouter.kt @@ -15,6 +15,8 @@ interface TreeRouter : ContainerConnector, CompositeComponentRouter, ComponentRo fun branch(containerComponentKey: String): TreeRouter + fun branch(containerComponentKey: String, config: RouterConfig): TreeRouter + fun setOverlay(component: Component<*>) fun setOverlay(component: Component<*>, argument: A) @@ -26,6 +28,7 @@ interface TreeRouter : ContainerConnector, CompositeComponentRouter, ComponentRo suspend fun passBroadcastArgument(argument: A) companion object { - fun new(): TreeRouter = TreeRouterImpl() + fun new(): TreeRouter = TreeRouterImpl(config = RouterConfig.default()) + fun new(config: RouterConfig): TreeRouter = TreeRouterImpl(config = config) } } \ No newline at end of file diff --git a/brick/src/commonMain/kotlin/com/alphicc/brick/TreeRouterImpl.kt b/brick/src/commonMain/kotlin/com/alphicc/brick/TreeRouterImpl.kt index c21ffa5..7985e4a 100644 --- a/brick/src/commonMain/kotlin/com/alphicc/brick/TreeRouterImpl.kt +++ b/brick/src/commonMain/kotlin/com/alphicc/brick/TreeRouterImpl.kt @@ -8,7 +8,8 @@ import kotlinx.coroutines.flow.StateFlow internal class TreeRouterImpl( override val initialComponent: Component<*>? = null, - override val parentRouter: TreeRouter? = null + override val parentRouter: TreeRouter? = null, + config: RouterConfig ) : TreeRouter { private val keyManager = KeyManager() @@ -17,7 +18,10 @@ internal class TreeRouterImpl( private val _currentComponentFlow: MutableStateFlow?> = MutableStateFlow(null) private val _currentChildFlow: MutableStateFlow>> = MutableStateFlow(emptyList()) private val _isRouterEmpty: MutableStateFlow = MutableStateFlow(true) - private val _broadcastFlow: MutableSharedFlow = MutableSharedFlow(replay = 1, extraBufferCapacity = 10) + private val _broadcastFlow: MutableSharedFlow = MutableSharedFlow( + replay = config.broadcastFlowReplay, + extraBufferCapacity = config.broadcastFlowExtraBufferCapacity + ) private val childRouters: AtomicRef>> = atomic(emptyList()) private val tree: AtomicRef> = atomic(emptyList()) @@ -102,8 +106,11 @@ internal class TreeRouterImpl( fetchNode() } - override fun branch(containerComponentKey: String): TreeRouter { - val newRouter = TreeRouterImpl(initialComponent, this) + override fun branch(containerComponentKey: String): TreeRouter = + branch(containerComponentKey, RouterConfig.default()) + + override fun branch(containerComponentKey: String, config: RouterConfig): TreeRouter { + val newRouter = TreeRouterImpl(initialComponent, this, config) val childRouters = childRouters.value.toMutableList() childRouters.add(containerComponentKey to newRouter) this.childRouters.value = childRouters diff --git a/desktop/build.gradle.kts b/desktop/build.gradle.kts index f327e50..d745458 100644 --- a/desktop/build.gradle.kts +++ b/desktop/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "io.github.alphicc" -version = "2.1.2" +version = "2.2.0" kotlin { jvm { diff --git a/gradle.properties b/gradle.properties index 624675a..e97cf78 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,7 +13,7 @@ gradle_tools_version=7.0.4 publish_plugin_version=0.18.0 GROUP=io.github.alphicc -VERSION_NAME=2.1.2 +VERSION_NAME=2.2.0 POM_NAME=Brick POM_DESCRIPTION=Brick - Navigation library for Jetpack Compose.