diff --git a/documentation/index.md b/documentation/index.md
index 424991209..ff9442fa5 100644
--- a/documentation/index.md
+++ b/documentation/index.md
@@ -66,6 +66,5 @@
## Experimental features
- [Portals](experimental/portals.md)
-- RecyclerView hosting
- [Jetpack Compose compatibility](experimental/jetpack-compose.md)
diff --git a/documentation/setup/deps.md b/documentation/setup/deps.md
index f5fa2a4cc..0e3c53e47 100644
--- a/documentation/setup/deps.md
+++ b/documentation/setup/deps.md
@@ -63,10 +63,3 @@ Rx (optional):
```groovy
implementation 'com.github.badoo.RIBs:rib-portal-rx:{latest-version}'
```
-
-### Recyclerview integration (experimental)
-```groovy
-implementation 'com.github.badoo.RIBs:rib-recyclerview:{latest-version}'
-```
-
-
diff --git a/libraries/rib-recyclerview/.gitignore b/libraries/rib-recyclerview/.gitignore
deleted file mode 100644
index 796b96d1c..000000000
--- a/libraries/rib-recyclerview/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/libraries/rib-recyclerview/build.gradle b/libraries/rib-recyclerview/build.gradle
deleted file mode 100644
index a3cf176d3..000000000
--- a/libraries/rib-recyclerview/build.gradle
+++ /dev/null
@@ -1,38 +0,0 @@
-configureAndroidLibrary(project)
-
-android {
- namespace 'com.badoo.ribs.android.recyclerview'
-}
-
-dependencies {
- api deps.android.appCompat
-
- implementation deps.apt.javaxInject
-
- implementation deps.android.recyclerView
- compileOnly deps.android.annotations
- implementation deps.external.mviCore
- implementation deps.external.mviCoreAndroid
- implementation deps.external.mviCoreBinder
- implementation deps.external.rxrelay2
- implementation deps.external.rxjava2
- implementation project(":libraries:rib-base")
- implementation project(':libraries:rib-rx2')
-
- junitTestImplementation(project)
- testImplementation deps.android.annotations
- testImplementation deps.test.assertj
- testImplementation deps.external.roboelectricBase
- testImplementation deps.test.mockitoKotlin
-
- junitAndroidTestImplementation(project)
- androidTestImplementation deps.test.assertj
- androidTestImplementation deps.androidTest.espresso
- androidTestImplementation deps.androidTest.espressoIntents
- androidTestImplementation deps.androidTest.runner
- androidTestImplementation deps.androidTest.rules
- androidTestImplementation project(":libraries:rib-base-test")
- androidTestImplementation project(':libraries:rib-base-test-activity')
-}
-
-apply from: rootProject.file('gradle/gradle-mvn-push.gradle')
diff --git a/libraries/rib-recyclerview/consumer-rules.pro b/libraries/rib-recyclerview/consumer-rules.pro
deleted file mode 100644
index e69de29bb..000000000
diff --git a/libraries/rib-recyclerview/detekt-baseline.xml b/libraries/rib-recyclerview/detekt-baseline.xml
deleted file mode 100644
index ba0129eac..000000000
--- a/libraries/rib-recyclerview/detekt-baseline.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
- LongParameterList:Adapter.kt$Adapter$( private val hostingStrategy: RecyclerViewHost.HostingStrategy, initialEntries: List<Entry<T>>? = null, private val routingSource: Pool<T>, private val feature: RecyclerViewHostFeature<T>, private val viewHolderLayoutParams: FrameLayout.LayoutParams )
- LongParameterList:RecyclerViewHostNode.kt$RecyclerViewHostNode$( buildParams: BuildParams<Nothing?>, plugins: List<Plugin>, private val viewDeps: RecyclerViewHostView.Dependency, private val timeCapsule: AndroidTimeCapsule, private val adapter: Adapter<T>, private val connector: NodeConnector<Input<T>, Nothing> = NodeConnector() )
- UnusedImports:RecyclerViewHostView.kt$import android.view.ViewGroup
-
-
diff --git a/libraries/rib-recyclerview/gradle.properties b/libraries/rib-recyclerview/gradle.properties
deleted file mode 100644
index 766e26477..000000000
--- a/libraries/rib-recyclerview/gradle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-POM_NAME=RIBs (RecyclerView)
-POM_ARTIFACT_ID=rib-recyclerview
-POM_PACKAGING=android
diff --git a/libraries/rib-recyclerview/proguard-rules.pro b/libraries/rib-recyclerview/proguard-rules.pro
deleted file mode 100644
index f1b424510..000000000
--- a/libraries/rib-recyclerview/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
diff --git a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/Adapter.kt b/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/Adapter.kt
deleted file mode 100644
index 1101b4ea6..000000000
--- a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/Adapter.kt
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.badoo.ribs.android.recyclerview
-
-import android.os.Parcelable
-import android.view.View
-import android.view.ViewGroup
-import android.widget.FrameLayout
-import androidx.recyclerview.widget.RecyclerView
-import com.badoo.ribs.android.AndroidRibViewHost
-import com.badoo.ribs.android.recyclerview.RecyclerViewHost.HostingStrategy.EAGER
-import com.badoo.ribs.android.recyclerview.RecyclerViewHost.HostingStrategy.LAZY
-import com.badoo.ribs.android.recyclerview.RecyclerViewHost.Input
-import com.badoo.ribs.android.recyclerview.RecyclerViewHostFeature.State.Entry
-import com.badoo.ribs.annotation.ExperimentalApi
-import com.badoo.ribs.core.Node
-import com.badoo.ribs.core.view.RibView
-import com.badoo.ribs.routing.Routing
-import com.badoo.ribs.routing.activator.ChildActivator
-import com.badoo.ribs.routing.source.impl.Pool
-import com.badoo.ribs.routing.source.impl.Pool.Item
-import com.badoo.ribs.util.RIBs.errorHandler
-import io.reactivex.functions.Consumer
-import java.lang.ref.WeakReference
-
-@ExperimentalApi
-internal class Adapter(
- private val hostingStrategy: RecyclerViewHost.HostingStrategy,
- initialEntries: List>? = null,
- private val routingSource: Pool,
- private val feature: RecyclerViewHostFeature,
- private val viewHolderLayoutParams: FrameLayout.LayoutParams
-) : RecyclerView.Adapter(),
- Consumer>,
- ChildActivator {
-
- private val holders: MutableMap> = hashMapOf()
-
- class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- var identifier: Routing.Identifier? = null
- var host: RibView = AndroidRibViewHost(itemView as FrameLayout)
- }
-
- private var items: List> = initialEntries ?: emptyList()
-
- override fun getItemCount(): Int =
- items.size
-
- override fun accept(state: RecyclerViewHostFeature.State) {
- items = state.items
-
- when (state.lastCommand) {
- null -> { /* No-op when restored from TimeCapsule or genuinely empty state */ }
- is Input.Add -> {
- addIfEager(state.items.last())
- notifyItemInserted(state.items.lastIndex)
- }
- }
- }
-
- private fun addIfEager(entry: Entry) {
- if (hostingStrategy == EAGER) {
- routingSource.add(
- Item(
- configuration = entry.element,
- identifier = entry.identifier,
- isActive = false
- )
- )
- }
- }
-
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder =
- ViewHolder(
- FrameLayout(parent.context).apply {
- layoutParams = viewHolderLayoutParams
- }
- )
-
- override fun onBindViewHolder(holder: ViewHolder, position: Int) {
- val entry = items[position]
- holder.identifier = entry.identifier
- }
-
- override fun onViewAttachedToWindow(holder: ViewHolder) {
- super.onViewAttachedToWindow(holder)
- val identifier = holder.identifier!! // at this point it should be bound
- holders[identifier] = WeakReference(holder)
-
- if (hostingStrategy == LAZY) {
- val entry = feature.state.items.find { it.identifier == identifier }!!
- routingSource.add(
- Item(
- configuration = entry.element,
- identifier = entry.identifier,
- isActive = false
- )
- )
- }
-
- routingSource.activate(identifier)
- }
-
- override fun activate(routing: Routing, child: Node<*>) {
- viewForRouting(routing)?.attachChild(child)
- ?: errorHandler.handleNonFatalError("Holder is gone! Routing: $routing, child: $child")
- }
-
- override fun onViewRecycled(holder: ViewHolder) {
- super.onViewRecycled(holder)
- holder.identifier?.let { identifier ->
- routingSource.deactivate(identifier)
- if (hostingStrategy == LAZY) {
- routingSource.remove(identifier)
- }
- } ?: errorHandler.handleNonFatalError("Holder is not bound! holder: $holder")
- }
-
- internal fun onDestroy() {
- items.forEach {
- routingSource.deactivate(it.identifier)
- }
- }
-
- override fun deactivate(routing: Routing, child: Node<*>) {
- child.saveViewState()
- viewForRouting(routing)?.detachChild(child)
- }
-
- private fun viewForRouting(routing: Routing): RibView? =
- holders[routing.identifier]?.get()?.host
-}
diff --git a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHost.kt b/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHost.kt
deleted file mode 100644
index a7174e28e..000000000
--- a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHost.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.badoo.ribs.android.recyclerview
-
-import android.content.Context
-import android.os.Parcelable
-import android.widget.FrameLayout
-import androidx.recyclerview.widget.RecyclerView
-import com.badoo.ribs.android.recyclerview.RecyclerViewHost.Input
-import com.badoo.ribs.rx2.clienthelper.connector.Connectable
-import com.badoo.ribs.annotation.ExperimentalApi
-import com.badoo.ribs.core.Rib
-import com.badoo.ribs.routing.resolver.RoutingResolver
-import kotlinx.parcelize.Parcelize
-
-@ExperimentalApi
-interface RecyclerViewHost: Rib, Connectable, Nothing> {
-
- @ExperimentalApi
- interface Dependency {
- val hostingStrategy: HostingStrategy
- val initialElements: List
- val resolver: RoutingResolver
- val recyclerViewFactory: RecyclerViewFactory
- val layoutManagerFactory: LayoutManagerFactory
- val viewHolderLayoutParams: FrameLayout.LayoutParams
- }
-
- @ExperimentalApi
- enum class HostingStrategy {
- /**
- * Child RIBs get created immediately and are only destroyed along with host
- */
- EAGER,
-
- /**
- * Child RIBs get created when their associated ViewHolders are attached, and get destroyed
- * along with them
- */
- LAZY
- }
-
- @ExperimentalApi
- sealed class Input : Parcelable {
- @Parcelize
- data class Add(val element: T): Input()
- }
-}
-
-typealias RecyclerViewFactory = (Context) -> RecyclerView
-
-typealias LayoutManagerFactory = (Context) -> RecyclerView.LayoutManager
diff --git a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostBuilder.kt b/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostBuilder.kt
deleted file mode 100644
index 9cf90d5de..000000000
--- a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostBuilder.kt
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.badoo.ribs.android.recyclerview
-
-import android.os.Parcelable
-import com.badoo.mvicore.android.AndroidTimeCapsule
-import com.badoo.ribs.annotation.ExperimentalApi
-import com.badoo.ribs.builder.SimpleBuilder
-import com.badoo.ribs.core.modality.BuildParams
-import com.badoo.ribs.routing.router.RouterByDelegate
-import com.badoo.ribs.routing.source.impl.Pool
-import com.badoo.ribs.rx2.disposables
-
-@ExperimentalApi
-class RecyclerViewHostBuilder(
- private val dependency: RecyclerViewHost.Dependency
-) : SimpleBuilder>() {
-
- @SuppressWarnings("LongMethod")
- override fun build(buildParams: BuildParams): RecyclerViewHost {
- val timeCapsule = AndroidTimeCapsule(buildParams.savedInstanceState)
-
- val routingSource = Pool(
- allowRepeatingConfigurations = true,
- buildParams = buildParams
- )
-
- val feature = RecyclerViewHostFeature(
- timeCapsule = timeCapsule,
- initialElements = dependency.initialElements
- )
-
- val adapter = Adapter(
- hostingStrategy = dependency.hostingStrategy,
- initialEntries = feature.state.items,
- routingSource = routingSource,
- feature = feature,
- viewHolderLayoutParams = dependency.viewHolderLayoutParams
- )
-
- val router = RouterByDelegate(
- buildParams = buildParams,
- routingSource = routingSource,
- resolver = dependency.resolver,
- clientChildActivator = adapter
- )
-
- val interactor = RecyclerViewHostInteractor(
- buildParams = buildParams,
- feature = feature,
- adapter = adapter
- )
-
- val viewDeps = object : RecyclerViewHostView.Dependency {
- override fun adapter(): Adapter<*> = adapter
- override fun recyclerViewFactory(): RecyclerViewFactory = dependency.recyclerViewFactory
- override fun layoutManagerFactory(): LayoutManagerFactory = dependency.layoutManagerFactory
- }
-
- return RecyclerViewHostNode(
- buildParams = buildParams,
- plugins = listOf(
- router,
- interactor,
- disposables(feature)
- ),
- viewDeps = viewDeps,
- timeCapsule = timeCapsule,
- adapter = adapter
- )
- }
-}
diff --git a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostFeature.kt b/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostFeature.kt
deleted file mode 100644
index 4d274ab12..000000000
--- a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostFeature.kt
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.badoo.ribs.android.recyclerview
-
-import android.os.Parcelable
-import com.badoo.mvicore.element.Bootstrapper
-import com.badoo.mvicore.element.Reducer
-import com.badoo.mvicore.element.TimeCapsule
-import com.badoo.mvicore.feature.ReducerFeature
-import com.badoo.ribs.android.recyclerview.RecyclerViewHost.Input
-import com.badoo.ribs.android.recyclerview.RecyclerViewHostFeature.State
-import com.badoo.ribs.routing.Routing
-import io.reactivex.Observable
-import kotlinx.parcelize.Parcelize
-import java.util.*
-
-private val timeCapsuleKey = "RecyclerViewHostFeature"
-private fun TimeCapsule>.initialState(): State =
- (get(timeCapsuleKey) ?: State())
-
-
-internal class RecyclerViewHostFeature(
- timeCapsule: TimeCapsule>,
- initialElements: List
-) : ReducerFeature, State, Nothing>(
- initialState = timeCapsule.initialState(),
- bootstrapper = BootstrapperImpl(timeCapsule.initialState(), initialElements),
- reducer = ReducerImpl()
-) {
- init {
- timeCapsule.register(timeCapsuleKey) {
- state.copy(
- lastCommand = null
- )
- }
- }
-
- @Parcelize
- data class State(
- val items: List> = emptyList(),
- val lastCommand: Input? = null
- ) : Parcelable {
-
- @Parcelize
- data class Entry(
- val element: T,
- val identifier: Routing.Identifier
- ) : Parcelable
- }
-
- class BootstrapperImpl(
- private val initialState: State,
- private val initialElements: List
- ) : Bootstrapper> {
- override fun invoke(): Observable> =
- Observable
- .fromIterable(if (initialState.items.isEmpty()) initialElements else emptyList())
- .map {
- Input.Add(it)
- }
- }
-
- class ReducerImpl : Reducer, Input> {
- override fun invoke(state: State, input: Input): State = when (input) {
- is Input.Add -> {
- val uuid = UUID.randomUUID()
- state.copy(
- lastCommand = input,
- items = state.items + State.Entry(
- element = input.element,
- identifier = Routing.Identifier(uuid)
- )
- )
- }
- }
- }
-}
diff --git a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostInteractor.kt b/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostInteractor.kt
deleted file mode 100644
index c1ff9c5c4..000000000
--- a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostInteractor.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.badoo.ribs.android.recyclerview
-
-import android.os.Parcelable
-import androidx.lifecycle.Lifecycle
-import com.badoo.mvicore.android.lifecycle.createDestroy
-import com.badoo.ribs.clienthelper.interactor.Interactor
-import com.badoo.ribs.core.modality.BuildParams
-import com.badoo.ribs.core.view.RibView
-
-internal class RecyclerViewHostInteractor(
- buildParams: BuildParams<*>,
- private val feature: RecyclerViewHostFeature,
- private val adapter: Adapter
-) : Interactor, RibView>(
- buildParams = buildParams
-) {
-
- override fun onCreate(nodeLifecycle: Lifecycle) {
- nodeLifecycle.createDestroy {
- bind(feature to adapter) // TODO consider viewLifecycle
- bind(rib.input to feature)
- }
- }
-}
diff --git a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostNode.kt b/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostNode.kt
deleted file mode 100644
index 2ad04d39d..000000000
--- a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostNode.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.badoo.ribs.android.recyclerview
-
-import android.os.Bundle
-import android.os.Parcelable
-import com.badoo.mvicore.android.AndroidTimeCapsule
-import com.badoo.ribs.android.recyclerview.RecyclerViewHost.Input
-import com.badoo.ribs.rx2.clienthelper.connector.Connectable
-import com.badoo.ribs.rx2.clienthelper.connector.NodeConnector
-import com.badoo.ribs.core.Node
-import com.badoo.ribs.core.modality.BuildParams
-import com.badoo.ribs.core.plugin.Plugin
-import com.badoo.ribs.core.view.RibView
-
-internal class RecyclerViewHostNode(
- buildParams: BuildParams,
- plugins: List,
- private val viewDeps: RecyclerViewHostView.Dependency,
- private val timeCapsule: AndroidTimeCapsule,
- private val adapter: Adapter,
- private val connector: NodeConnector, Nothing> = NodeConnector()
-) : Node(
- buildParams = buildParams,
- viewFactory = { RecyclerViewHostViewImpl.Factory().invoke(viewDeps).invoke(it) },
- plugins = plugins
-), RecyclerViewHost, Connectable, Nothing> by connector {
-
- override fun onSaveInstanceState(outState: Bundle) {
- super.onSaveInstanceState(outState)
- timeCapsule.saveState(outState)
- }
-
- override fun onDestroy(isRecreating: Boolean) {
- adapter.onDestroy()
- super.onDestroy(isRecreating)
- }
-}
diff --git a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostView.kt b/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostView.kt
deleted file mode 100644
index cb3581026..000000000
--- a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/RecyclerViewHostView.kt
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.badoo.ribs.android.recyclerview
-
-import androidx.recyclerview.widget.RecyclerView
-import com.badoo.ribs.android.recyclerview.RecyclerViewHostView.Dependency
-import com.badoo.ribs.core.view.AndroidRibView
-import com.badoo.ribs.core.view.RibView
-import com.badoo.ribs.core.view.ViewFactory
-import com.badoo.ribs.core.view.ViewFactoryBuilder
-
-
-internal interface RecyclerViewHostView : RibView {
-
- interface Factory : ViewFactoryBuilder
-
- interface Dependency {
- fun adapter(): Adapter<*>
- fun recyclerViewFactory(): RecyclerViewFactory
- fun layoutManagerFactory(): LayoutManagerFactory
- }
-}
-
-internal class RecyclerViewHostViewImpl private constructor(
- override val androidView: RecyclerView
-) : AndroidRibView(),
- RecyclerViewHostView {
-
- class Factory : RecyclerViewHostView.Factory {
- override fun invoke(deps: Dependency): ViewFactory = ViewFactory {
- RecyclerViewHostViewImpl(
- androidView = deps
- .recyclerViewFactory()
- .invoke(it.parent.androidView.context)
- .apply {
- adapter = deps.adapter()
- layoutManager =
- deps
- .layoutManagerFactory()
- .invoke(it.parent.androidView.context)
- }
- )
- }
- }
-}
diff --git a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/routing/resolution/RecyclerViewItemResolution.kt b/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/routing/resolution/RecyclerViewItemResolution.kt
deleted file mode 100644
index 5d72294ac..000000000
--- a/libraries/rib-recyclerview/src/main/java/com/badoo/ribs/android/recyclerview/routing/resolution/RecyclerViewItemResolution.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.badoo.ribs.android.recyclerview.routing.resolution
-
-import com.badoo.ribs.core.Rib
-import com.badoo.ribs.core.modality.ActivationMode
-import com.badoo.ribs.core.modality.BuildContext
-import com.badoo.ribs.routing.resolution.RibFactory
-import com.badoo.ribs.routing.resolution.Resolution
-
-open class RecyclerViewItemResolution(
- private val ribFactory: RibFactory
-) : Resolution {
-
- override val numberOfNodes: Int = 1
-
- override fun buildNodes(buildContexts: List): List =
- listOf(
- ribFactory.invoke(
- buildContexts.first().copy(
- activationMode = ActivationMode.CLIENT
- )
- )
- )
-
- companion object {
- fun recyclerView(ribFactory: RibFactory): Resolution =
- RecyclerViewItemResolution(
- ribFactory
- )
- }
-}
diff --git a/sandbox/build.gradle b/sandbox/build.gradle
index d484cbe29..f411216ff 100644
--- a/sandbox/build.gradle
+++ b/sandbox/build.gradle
@@ -76,7 +76,6 @@ dependencies {
implementation project(":libraries:rib-debug-utils")
implementation project(":libraries:rib-mvicore")
implementation project(':libraries:rib-portal-rx2')
- implementation project(":libraries:rib-recyclerview")
implementation project(':libraries:rib-rx2')
junitTestImplementation(project)
diff --git a/sandbox/src/main/java/com/badoo/ribs/sandbox/app/RecyclerViewTestActivity.kt b/sandbox/src/main/java/com/badoo/ribs/sandbox/app/RecyclerViewTestActivity.kt
deleted file mode 100644
index 8cbcfb2a3..000000000
--- a/sandbox/src/main/java/com/badoo/ribs/sandbox/app/RecyclerViewTestActivity.kt
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.badoo.ribs.sandbox.app
-
-import android.os.Bundle
-import android.os.Parcelable
-import android.view.ViewGroup
-import android.widget.FrameLayout
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import com.badoo.ribs.android.RibActivity
-import com.badoo.ribs.android.activitystarter.ActivityStarter
-import com.badoo.ribs.android.dialog.DialogLauncher
-import com.badoo.ribs.android.permissionrequester.PermissionRequester
-import com.badoo.ribs.android.recyclerview.LayoutManagerFactory
-import com.badoo.ribs.android.recyclerview.RecyclerViewFactory
-import com.badoo.ribs.android.recyclerview.RecyclerViewHost
-import com.badoo.ribs.android.recyclerview.RecyclerViewHost.HostingStrategy.EAGER
-import com.badoo.ribs.android.recyclerview.RecyclerViewHost.Input.Add
-import com.badoo.ribs.android.recyclerview.RecyclerViewHostBuilder
-import com.badoo.ribs.android.recyclerview.routing.resolution.RecyclerViewItemResolution.Companion.recyclerView
-import com.badoo.ribs.core.Node
-import com.badoo.ribs.core.Rib
-import com.badoo.ribs.core.modality.BuildContext.Companion.root
-import com.badoo.ribs.routing.Routing
-import com.badoo.ribs.routing.resolution.Resolution
-import com.badoo.ribs.routing.resolver.RoutingResolver
-import com.badoo.ribs.sandbox.R
-import com.badoo.ribs.sandbox.rib.foo_bar.FooBar
-import com.badoo.ribs.sandbox.rib.foo_bar.FooBarBuilder
-import com.badoo.ribs.sandbox.rib.lorem_ipsum.LoremIpsum
-import com.badoo.ribs.sandbox.rib.lorem_ipsum.LoremIpsumBuilder
-import com.badoo.ribs.sandbox.rib.switcher.Switcher
-import com.badoo.ribs.sandbox.rib.switcher.SwitcherBuilder
-import com.badoo.ribs.sandbox.util.CoffeeMachine
-import com.badoo.ribs.sandbox.util.StupidCoffeeMachine
-import kotlinx.parcelize.Parcelize
-
-/** The sample app's single activity */
-class RecyclerViewTestActivity : RibActivity() {
-
- // We'll put these into the RecyclerView by resolving them to builders (see below)
- sealed class Item : Parcelable {
- @Parcelize object LoremIpsumItem : Item()
- @Parcelize object FooBarItem : Item()
- @Parcelize object Switcher : Item()
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- setContentView(R.layout.activity_root)
- super.onCreate(savedInstanceState)
- }
-
- override val rootViewGroup: ViewGroup
- get() = findViewById(R.id.root)
-
- private val fooBarBuilder = FooBarBuilder(object : FooBar.Dependency {
- override val permissionRequester: PermissionRequester = integrationPoint.permissionRequester
- })
-
- private val loremIpsumBuilder = LoremIpsumBuilder(object : LoremIpsum.Dependency {})
-
- private val noopPortal = object : com.badoo.ribs.portal.Portal.OtherSide {
- override fun showContent(remoteNode: Node<*>, remoteConfiguration: Parcelable) {
- // Sorry, no-op
- }
-
- override fun showOverlay(remoteNode: Node<*>, remoteConfiguration: Parcelable) {
- // Sorry, no-op
- }
- }
-
- private val switcherBuilder =
- SwitcherBuilder(
- object : Switcher.Dependency {
- override val activityStarter: ActivityStarter = integrationPoint.activityStarter
- override val permissionRequester: PermissionRequester =
- integrationPoint.permissionRequester
- override val dialogLauncher: DialogLauncher = integrationPoint.dialogLauncher
- override val coffeeMachine: CoffeeMachine = StupidCoffeeMachine()
- override val portal: com.badoo.ribs.portal.Portal.OtherSide = noopPortal
- }
- )
-
- private val resolver = object : RoutingResolver- {
- override fun resolve(routing: Routing
- ): Resolution =
- when (routing.configuration) {
- Item.LoremIpsumItem -> recyclerView { loremIpsumBuilder.build(it) }
- Item.FooBarItem -> recyclerView { fooBarBuilder.build(it) }
- Item.Switcher-> recyclerView { switcherBuilder.build(it) }
- }
- }
-
- private val initialElements = listOf
- (
- Item.FooBarItem
- )
-
- private lateinit var recyclerViewHost: RecyclerViewHost
-
-
- override fun createRib(savedInstanceState: Bundle?): Rib =
- RecyclerViewHostBuilder(
- object : RecyclerViewHost.Dependency
- {
- override val hostingStrategy: RecyclerViewHost.HostingStrategy = EAGER
- override val initialElements: List
- = this@RecyclerViewTestActivity.initialElements
- override val resolver: RoutingResolver
- = this@RecyclerViewTestActivity.resolver
- override val recyclerViewFactory: RecyclerViewFactory = ::RecyclerView
- override val layoutManagerFactory: LayoutManagerFactory = ::LinearLayoutManager
- override val viewHolderLayoutParams: FrameLayout.LayoutParams =
- FrameLayout.LayoutParams(
- FrameLayout.LayoutParams.MATCH_PARENT,
- FrameLayout.LayoutParams.WRAP_CONTENT
- )
- }
- ).build(root(savedInstanceState)).also {
- recyclerViewHost = it
- }
-
- override fun onResume() {
- super.onResume()
- recyclerViewHost.input.accept(Add(Item.LoremIpsumItem))
- }
-}
diff --git a/settings.gradle b/settings.gradle
index 7d2fc8565..4b6dc5dc8 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -9,7 +9,6 @@ include ':libraries:rib-debug-utils'
include ':libraries:rib-mvicore'
include ':libraries:rib-portal'
include ':libraries:rib-portal-rx2'
-include ':libraries:rib-recyclerview'
include ':libraries:rib-rx2'
include ':samples:app:hello-world'